0

Postメソッドを使用してWebRequestを要求し、応答を取得するには、XMLドキュメントをパラメーターとして送信する必要があります。Webサービスは、次のメソッドを実装します。

public string Register(XmlDocument register){...}

私はこのようにしようとしていますが、応答を得ることができず、コードが機能しているかどうかわかりません=(

HttpWebRequest request = HttpWebRequest.Create("http://ws2.sti.gov.kg/TRKService/PatentService.asmx/Register") as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";

Encoding ex = Encoding.GetEncoding("iso-8859-1");
XmlDocument doc = new XmlDocument();
doc.LoadXml("<foo><bar>baz</bar></foo>");
string rawXml = doc.OuterXml;

string requestText = string.Format("register={0}", HttpUtility.UrlEncode(rawXml, ex));

Stream requestStream = request.GetRequestStream();
StreamWriter requestWriter = new StreamWriter(requestStream, ex);
requestWriter.Write(requestText);            
requestWriter.Close();

多分誰かが実用的な例を持っていますか?

4

1 に答える 1

1

403エラー

Webサービスをインポートしようとしたときに403を取得した場合、これはあなたのせいではない可能性があります。Webブラウザでwsdlファイルを確認してみてください。それでも403エラーが発生する場合は、そのサービスを使用する権限がないため、コーディングしても意味がありません。

コード構文

また、あなたのコードでは、どこにも応答を読み戻していないようです。最後のステートメントはXMLをストリームに書き込みますが、応答をどこにも読み戻さないでください。

requestWriter.Write(requestText);            
requestWriter.Close();

石鹸

通信しているWebサービスがSOAPベースの場合、XMLペイロードはSOAP標準に準拠している必要があります。上記のサンプルコードは、おそらく単なる例であるため、非常に基本的なXMLを使用していますが、それが機能するためには、次の行に沿った形式のリクエストが必要になります。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetWeather xmlns="http://www.webserviceX.NET">
      <CityName>string</CityName>
      <CountryName>string</CountryName>
    </GetWeather>
  </soap:Body>
</soap:Envelope>

いいえ

<foo><bar>baz</bar></foo>

繰り返しになりますが、例としてfooのみを使用したことは明らかですが、これも問題の原因である可能性があるため、送信する実際のXMLペイロードを調べてください。

于 2012-08-25T18:09:45.470 に答える