4

私はいくつかのグーグル検索を行ってきましたが、このトピックについては部分的にしか成功していません。誰かがC#を使用してHTTPPOSTを実行してXMLをHTTPサービスに送信する例を提案できるかどうか疑問に思いました。

データベースからデータを抽出するasmxWebサービスがあり、そのデータをXMLドキュメントに保存します。次に、SOAPプロトコルを使用してそのXMLドキュメントをHTTPサービスに送信する必要があります。

私はサービスに接続するためのコードのこの部分を持っています

WebRequest myReq = WebRequest.Create("https://WEB_URL");
 System.Net.ServicePointManager.CertificatePolicy = new CertificatePolicyClass();

                string username = "SOMETHING";
                string password = "ELSE";
                string usernamePassword = username + ":" + password;
                CredentialCache mycache = new CredentialCache();
                mycache.Add(new Uri("https://WEB_URL"), "Basic", new  NetworkCredential(username, password));
                myReq.Credentials = mycache;
                myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));

                WebResponse wr = myReq.GetResponse();
                Stream receiveStream = wr.GetResponseStream();
                StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
                string content = reader.ReadToEnd();

それで、誰かがXMLドキュメントをhttpサービスに送信するコードを持っていますか、この部分は私が書く方法を知りません、私は書き込みトレースにいるのかわかりません、私はそれがこのような何かをしなければならないと信じています

request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";

だから誰かが私を助けることができます!ありがとう!

4

2 に答える 2

6

これが私が得たものです、それがあなたに役立つことを願っています:

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("https://WEB_URL");
myReq.Method = "POST";
myReq.ContentType = "text/xml";
myReq.Timeout = 30000;
myReq.Headers.Add("SOAPAction", ":\"#save\"");

byte[] PostData = Encoding.UTF8.GetBytes(xmlDocument);
myReq.ContentLength = PostData.Length;

using (Stream requestStream = myReq.GetRequestStream())
{
    requestStream.Write(PostData, 0, PostData.Length);
}

HttpWebResponse response = (HttpWebResponse)myReq.GetResponse();
于 2012-07-12T11:43:08.517 に答える
1
    string soap = 
    @"<?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>
        <Register xmlns=""http://tempuri.org/"">
          <id>123</id>
          <data1>string</data1>
        </Register>
      </soap:Body>
    </soap:Envelope>";


HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost/WebServices/CustomerWebService.asmx");
req.Headers.Add("SOAPAction"http://tempuri.org/Register\"");
req.ContentType = "text/xml;charset=\"utf-8\"";
req.Accept = "text/xml";
req.Method = "POST";

using (Stream stm = req.GetRequestStream())
{
     using (StreamWriter stmw = new StreamWriter(stm))
     {
          stmw.Write(soap);
     }
}

WebResponse response = req.GetResponse();

Stream responseStream = response.GetResponseStream();
于 2016-01-12T15:58:59.633 に答える