J'ai un problème lors de la publication de données XML à l'aide de HttpWebRequest. En fait, je veux Post 3 variables de formulairePublication de données XML avec certains champs Utilisation de .net HttpWebRequest
2 d'entre eux sont pour les informations d'identification et le troisième est pour les données XML à une API, L'API va authentifier et traiter les données XML, et retournera le succès si aucune erreur trouvée.
Voici ce que dit la documentation.
Les données seront transmises à la passerelle via un message HTTPS FORM et une valeur de chaîne "succès" sera renvoyée lors de la réception des données. Trois variables FORM au total seront affichées, dont deux contiendront des informations d'identification et la troisième contiendra les données HR-XML. Une valeur de chaîne "error" sera retournée si l'envoi échoue pour une raison quelconque.
Les champs integration_field1 = 1234, integration_field2 = 2345pwd, HRXML = champ de formulaire contenant l'ordre HR-XML (string)
Voici ce que je Codé ..
string strId = "123";
string strName = "test";
StreamReader sr2 = File.OpenText(Server.MapPath("~/App_Data/XMLFile.xml"));
string xml = sr2.ReadToEnd();
sr2.Close();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
xml = HttpUtility.UrlEncode(xmlDoc.OuterXml);
System.Text.UTF8Encoding encoding = new UTF8Encoding();
string postData = "xmldata=" + xml;
byte[] data = encoding.GetBytes(postData);
// Prepare web request...
HttpWebRequest myRequest =
(HttpWebRequest)WebRequest.Create("http://localhost:1994/TestXMLPost/PostData.aspx");
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(data, 0, data.Length);
newStream.Close();
WebResponse res = (HttpWebResponse)myRequest.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string str = sr.ReadToEnd();
sr.Close();
Sur PostData. aspx, je l'ai fait à des fins de test
if (Request.Form.Count > 0)
{
Response.Write(Request.Form["xmldata"] + "");
}
Je n'ai rien reçu dans la réponse. Seule l'erreur "Le serveur distant a renvoyé une erreur: (500) Erreur interne du serveur." Voici le formulaire HTML que je veux simuler en utilisant HttpWebRequest.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>testing</title>
</head>
<body>
<form action="https://myurl.com/samplepage.cfm" method="post" >
integration_id<input type="text" name="integration_id" value="id" /><br />
integration_pwd<input type="text" name="integration_pwd" value="pwd" /><br />
<textarea name="hrxml" style="height: 404px; width: 593px">
<?xml version="1.0" encoding="UTF-8"?>
<BackgroundCheck account="test" userId="test" password="test">
<BackgroundSearchPackage>
<ReferenceId>
<IdValue>12345678</IdValue>
</ReferenceId>
<PersonalData>
<PersonName>
<GivenName>TEST</GivenName>
<FamilyName primary="undefined">TEST</FamilyName>
</PersonName>
<DemographicDetail>
<GovernmentID countryCode="US" issuingAuthority="SSN">00000000000000</GovernmentID>
<DateOfBirth>1901-01-01</DateOfBirth>
</DemographicDetail>
</PersonalData>
</BackgroundSearchPackage>
</BackgroundCheck>
</textarea>
<input type="submit" />
</form>
</body>
</html>
Merci
... et? Quel est le problème? Qu'avez-vous essayé? – RPM1984