Публикация данных XML с некоторыми полями с использованием .net HttpWebRequest - PullRequest
0 голосов
/ 27 октября 2010

У меня возникла проблема при публикации XML-данных с помощью HttpWebRequest.На самом деле я хочу опубликовать переменные формы 3

2 из них для учетных данных, а третья - для данных XML для API. API будет проверять подлинность и обрабатывать данные XML, а в случае ошибки не вернетнайдено.

Вот что говорится в документации.

Данные будут переданы на шлюз через сообщение HTTPS FORM, а после успешного получения сообщения будет возвращено строковое значение «success».данные.Всего будут опубликованы три переменные FORM, две из которых будут содержать учетные данные, а третья будет содержать данные HR-XML.Строковое значение «error» будет возвращено, если публикация по какой-либо причине завершится неудачно.

Поля формы.

Вот то, что я кодировал ..

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();

На PostData.aspx я сделал это для целей тестирования

if (Request.Form.Count > 0)
     {
       Response.Write( Request.Form["xmldata"] + "");

      }

Я не получил ничего в ответе,Только ошибка «Удаленный сервер возвратил ошибку: (500) Внутренняя ошибка сервера».Вот HTML-форма, которую я хочу смоделировать с помощью 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>

Спасибо

1 Ответ

0 голосов
/ 27 октября 2010

Используйте Fiddler , чтобы увидеть, что на самом деле происходит по проводам.

В качестве альтернативы напишите копию того, что вы отправляете на диск.

Помимо вышесказанного, вы также можете проверить программу просмотра событий на целевом компьютере на предмет записи, связанной с ошибкой (если вы ненет альтернативной регистрации ошибок на месте).

Суть в том, что вам нужно увидеть, что происходит.

...