2013-12-23 147 views
0

我有XML的两个字符串列表,这里是C#代码:如何发送2个XML请求soap?

string sb = ""; 
List<string> listGamme = new List<string>(); 
sb = ("<?xml....") ;//1st listGamme 
listGamme.Add(sb); 
sb = ("<?xml..."); //2nd listGamme 
listGamme.Add(sb); 
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("urlofmy.asmx"); 
req.Headers.Add("SOAPAction", "URLSOAPACTION"); 
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)) 
        { 
         foreach (string gamme in listGamme) 
          { 

           stmw.Write(gamme); 

          } 

        } 

       } 

    WebResponse response = req.GetResponse(); 
     StreamReader srreader = new StreamReader(response.GetResponseStream()); 

添加的foreach内德第二次使用给我400错误的要求:),如果第一listGamme或第二listGamme是“注释掉”的代码工作!,我的代码出了什么问题?

+1

是有一些原因,你不能简单地用“添加服务引用”?请参阅http://johnwsaunders3.wordpress.com/2009/05/17/how-to-consume-a-web-service/ –

回答

2

在您的代码中应用一个循环来逐个发送请求。如果你的wsdl不允许它,你不能发送这两个请求simeltaneously。

在wsdl中查看您的请求消息格式,无论它是否像您在代码中定义的那样将请求作为字符串列表?

对于列表重复每个字符串下面的代码

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("urlofmy.asmx"); 

req.Headers.Add( “SOAPAction的”, “URLSOAPACTION”); 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)) 
       { 
        foreach (string gamme in listGamme) 
         { 

          stmw.Write(gamme); 

         } 

       } 

      } 

WebResponse response = req.GetResponse(); 
    StreamReader srreader = new StreamReader(response.GetResponseStream()); 

此外,您将为每个xml请求获得多个响应。

还有一件事,你可以从wsdl粘贴你的请求消息结构。可能是你可以在单一的请求消息发送多个rquest(取决于您的WSDL要求messaage结构)

编辑的代码:

string sb = ""; 
List<string> listGamme = new List<string>(); 
sb = ("<?xml....") ;//1st listGamme 
listGamme.Add(sb); 
sb = ("<?xml..."); //2nd listGamme 
listGamme.Add(sb); 

foreach (string gamme in listGamme) 
         { 
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create("urlofmy.asmx"); 
    req.Headers.Add("SOAPAction", "URLSOAPACTION"); 
    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(gamme); 

       } 

      } 

    WebResponse response = req.GetResponse(); 
    StreamReader srreader = new StreamReader(response.GetResponseStream()); 
} 
+0

如何应用循环逐个发送请求? – user3030806

+0

我收到此消息_ ** System.ArgumentException:流不可写入** _ – user3030806

+0

请在此处粘贴您的wsdl。我只需要从它请求消息结构。 – kingAm