2014-08-29 62 views
0

我必須通過POST Command將一些XML DATA發送到Web服務,我沒有關於webserice或任何所有,我只知道我需要發送一個XMLstream到它,我知道服務器IP地址和端口,參數的XML樹。而這一切,我都不知道如何完善這個Web服務並獲得迴應。我從來沒有使用Web服務的工作,所以請和理解,如果我的代碼有一些重大的錯誤,懇請指點我:C#ASP.Net:如何在不使用WSDL或代理類的情況下調用.NET 4.0 C#中的Web服務

public void Execute() 
    { 
     HttpWebRequest request = CreateWebRequest(); 
     XmlDocument soapEnvelopeXml = new XmlDocument(); 
     soapEnvelopeXml.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?> 
     <soap:Envelope    xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> 

     <soap:Body> 

        <mergeprofiles xmlns=""http://127.0.0.1:90""> 
        <Profile> 
        <Member>278615</Member> 
        <ExtRef>003D000001StY68IAF</ExtRef>zs 
        <Name>LESCA</Name> 
        <ChangedBy>user</ChangedBy> 
        <FirstName>Paolo</FirstName> 
        <Street1>via magnanina 3947</Street1> 
        <Street2></Street2> 
        <Street3></Street3> 
        <City>VIGEVANO</City> 
        <ZIP>27029</ZIP> 
        <EMail>[email protected]</EMail> 
        <Phone></Phone> 
        <MobilePhone>+39331231233</MobilePhone> 
        <Fax></Fax> 
        <ISOLanguage>en</ISOLanguage> 
        <Salut1>Mr</Salut1> 
        <Homepage></Homepage> 
        <VATNo1>0</VATNo1> 
        </Profile> 
        <EndOfMessage>@@@</EndOfMessage> 
        </mergeprofiles> 

</soap:Body> 

</soap:Envelope>"); 


using (Stream stream = request.GetRequestStream()) 
     { 
      soapEnvelopeXml.Save(stream); 
     } 

     using (WebResponse response = request.GetResponse()) 
     { 
      using (StreamReader rd = new StreamReader(response.GetResponseStream())) 
      { 
       string soapResult = rd.ReadToEnd(); 
       Console.WriteLine(soapResult); 
      } 
     } 
    } 
    /// <summary> 
    /// Create a soap webrequest to [Url] 
    /// </summary> 
    /// <returns></returns> 
    public HttpWebRequest CreateWebRequest() 
    { 
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(@"http://127.0.0.1:90/"); 
     webRequest.Headers.Add(@"SOAP:Action"); 
     webRequest.ContentType = "text/xml;charset=\"utf-8\""; 
     webRequest.Accept = "text/xml"; 
     webRequest.Method = "POST"; 
     return webRequest; 
    } 

的問題是當過我調用該方法Executepage_load,它運行和運行,並永遠不會停止。當我使用其他方法打電話時,Web服務正在工作,我不知道如何或爲什麼會發生這種情況,請問您可以幫忙嗎?

回答

1

嘗試以下一些從這篇文章的步驟:

http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client

的WebAPI是最新一輪的.NET的服務框架,它也有很大不同了很多代碼生成的SOAP類。特定用途,你可能會是下面的方法:

response = await client.PostAsync("your url", new StreamContent(yourStream)); 

如果您正在使用< .NET 4.5,您可能無法使用此語法。在這種情況下,請嘗試使用此答案代替:

.NET: Simplest way to send POST with data and read response

相關問題