2014-12-18 4 views
0

здесь функция:Почему мой метод http-сообщений не принимает символы xml?

private void button6_Click(object sender, EventArgs e1) 
    { 

     string requestText = string.Format("strXMLData={0}", System.Web.HttpUtility.UrlEncode("<tag1>text</tag1>", e)); 

     string data = "strXMLData=%3c&strXMLFileName=text1.xml"; //Working I am //getting in service mathod < 

string data = "strXMLData=%3e&strXMLFileName=text1.xml"; //Working I am getting in service mathod > 

//string data = "strXMLData=%3c%3e&strXMLFileName=text1.xml"; //this is also working,I am getting in service mathod 
//string data = "strXMLData=%3ct%3e&strXMLFileName=text1.xml"; //this is not working,I am getting error 500, service mathod should revcive either same string or <t> 
     byte[] dataStream = Encoding.GetEncoding("iso-8859-1").GetBytes(data); 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:52995/MyWebService.asmx/ReceiveXMLByContent"); 
     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded"; 
     // request.ContentType = "multipart/form-data"; 

     request.ContentLength = dataStream.Length; 
     Stream newStream = request.GetRequestStream(); 
     newStream.Write(dataStream, 0, dataStream.Length); 
     newStream.Close(); 
     var reader = new System.IO.StreamReader(request.GetResponse().GetResponseStream()); 
     string dataReturn = reader.ReadToEnd(); 
    } 

в коде выше я написал 3 случая, из которых два работают и третий случай

string data = "strXMLData=%3ct%3e&strXMLFileName=text1.xml"; //this is not working,I am getting error 500, service mathod should revcive either same string or <t> 

не работает вы можете объяснить, почему он не передает XML строку Я пытаюсь передать

<tag1> 
value 
</tag1> 

Поскольку мы не можем передать XML без кодирующая поэтому я закодирован эту строку, используя

string requestText = string.Format(System.Web.HttpUtility.UrlEncode("<tag1>text</tag1>", e)); //which returns %3ctag1%3etext%3c%2ftag1%3e 

вы можете объяснить, как передать xml строку ..? без получаю ошибку 500

здесь метод веб-сервиса

[WebMethod] 
    public string ReceiveXMLByContent(string strXMLData, string strXMLFileName) 
    { 
     string b = System.Web.HttpUtility.UrlDecode(strXMLData);    
     return "worked"; 
    } 

ответ

0

Проблема всегда лежит в следующих строках

 byte[] dataStream = Encoding.GetEncoding("iso-8859-1").GetBytes(data); 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:52995/MyWebService.asmx/ReceiveXMLByContent"); 
     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded"; 
     request.ContentType = "multipart/form-data"; 

Убедитесь, что request.ContentType особенно собственно, как и в синтаксисе :

 request.ContentType = "text/xml; charset=\"utf-8\"; action=\"HeaderName\";"; 

Убедитесь, что вы используете try and catch метод такой:

private void button6_Click(object sender, EventArgs e1) 
{ 
    string GetHttpPost = string.Empty; 
    GetHttpPost = CallHTTPPostMethod(); 
} 

public string CallHTTPPostMethod() 
{ 
    try 
    { 
    //Your code 

    return YourResponseXMLInStringFormat; 
    } 
    catch(Exception wex) 
    { 
    string pageContent = new StreamReader(wex.Response.GetResponseStream()).ReadToEnd().ToString(); 
    return pageContent; 
    } 
    } 
+0

Можете ли вы написать функцию примера для передачи простой XML-строки в веб-метод, например. значение, для вышеуказанного сценария – yogeshkmrsoni

Смежные вопросы