2009-03-27 7 views
0

J'essaie d'intégrer 3D Secure à l'e-shop de mon client. Je dois envoyer des données à 3DGate et obtenir le résultat retourné.Comment lire les données renvoyées à partir de WebRequest dans asp.net?

J'ai utilisé WebRequest pour cela, j'ai posté les données avec succès, mais les données retournées sont un texte HTML qui a un formulaire et quelques entrées dans le formulaire. J'ai besoin de lire ces valeurs comme Request.Form.Get("HashParams") mais en raison d'être juste une chaîne je ne pouvais pas le faire.

Est-il possible que je puisse obtenir ces valeurs de formulaire.

Je fais ce WebRequest en cas btnPayment_Click

Merci

+0

je l'ai fait avec RemotePost. C'est une classe écrite personnalisée, cependant vous pouvez l'écrire byyoursell. Il suffit de le rechercher sur Google "RemotePost". –

Répondre

1

Je crois madcolor pense à un scénario différent; vous créez un webrequest complètement nouveau sur le serveur, ce qui signifie qu'il n'y a pas de paramètres de requête; vous avez affaire à une réponse. Estimement, vous êtes devenu le navigateur Web, et vous devez faire l'analyse vous-même.

Étant donné que le magasin que vous utilisez est une application conçue pour les navigateurs, vous devrez faire face aux limitations inhérentes à ce format. Vous êtes lié aux techniques de "scraffage d'écran", car le serveur ne voit pas le texte de la réponse comme autre chose que: texte brut.

Si vous traitez avec du XHTML valide, vous pouvez le charger dans un XmlDocument et utiliser XPath/XQuery pour extraire les valeurs.

Si vous traitez avec le HTML standard de merde, vous devrez recourir à l'analyse syntaxique; Je suggère une regex pour celui-ci.

Idéalement, il y aurait une version non-HTML de l'e-shop, donc vous sauriez que vous travailliez avec XML/JSON/quoi que ce soit, mais s'il n'y a pas d'alternative, vous êtes coincé déchirant les données vous-même.

+0

J'ai posté le xhtml, pourriez-vous s'il vous plaît jeter un oeil –

0

Je ne vois pas comment contourner le HTML qui revient du WebRequest. Si vous avez de la chance, cela pourrait être un code XML valide. Sinon, vous devrez effectuer votre propre analyse de chaîne ou utiliser l'un des autres analyseurs HTML.

0

Ce sont les données renvoyées ...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<!-- gateerr_en.htm --> 
<html> 
<head> 
<script type="text/javascript" language="javascript"> 
function moveWindow() { 
    document.returnform.submit(); 
} 
</script> 
</head> 

<body onLoad="javascript:moveWindow()"> 
<form action="urlHere" method="post" name="returnform"> 

    <input type="hidden" name="clientid" value="xxx"> 
    <input type="hidden" name="oid" value=""> 

    <input type="hidden" name="mdStatus" value="7"> 
    <input type="hidden" name="mdErrorMsg" value="Tanimlanamayan"> 

    <input type="hidden" name="ErrMsg" value="Tanimlanamayan"> 
    <input type="hidden" name="Response" value="Error"> 
    <input type="hidden" name="ProcReturnCode" value="99"> 


    <!-- To support javascript unaware/disabled browsers --> 
    <noscript> 
     <center> 
     An Error Occurred, Please Click to continue.<br> 
     <input type="submit" value="Submit"></center> 
    </noscript> 
</form> 
</body> 
</html> 

J'ai besoin pour obtenir ces entrées cachées

+0

Utilisez cette regex: <. Input type = "hidden" + value = "(*)."/{0,1}> Ça va donner vous seulement les entrées avec le type caché, et le premier groupe aura la valeur. – jvenema

+0

(note aux signaleurs - c'est une très vieille question, de retour avant les commentaires et (peut-être) les modifications) – Will

Questions connexes