2012-02-01 48 views
0

我正在向Web服務發送一個URL和XML,以便它返回給我JSON的結果。我在這裏向web服務發佈請求,我如何從web服務返回值。由webservices返回的值是JSON。這裏應該返回類型,哪些應該還給獲得HTTP響應狀態和身體如何從C#中的Web服務獲取價值?

public string HttpPostcredentials(string XML, string url) 
{ 
    try 
    { 
     HttpWebRequest req = WebRequest.Create(new Uri(url)) as HttpWebRequest; 
     req.Method = "POST"; 
     byte[] buffer = Encoding.ASCII.GetBytes(XML); 
     req.ContentLength = buffer.Length; 
     req.ContentType = "application/xml"; 
     Stream PostData = req.GetRequestStream(); 
     PostData.Write(buffer, 0, buffer.Length); 
     PostData.Close();    
    } 
    catch (Exception e) 
    { 
    } 
    return null; 
} 
+4

空'catch'從句是萬惡之源。 – 2012-02-01 10:53:12

回答

0

你需要得到從HttpWebRequest的

 WebResponse result = req.GetResponse(); 
+0

並將其轉換爲HttpWebResponse,以便您可以訪問StatusCode。 – user1096188 2012-02-01 11:00:12

+0

即將補充:) – DerDee 2012-02-01 11:02:22

1

響應這是你在找什麼:

var request = WebRequest.Create(string.Concat(serviceUrl, resourceUrl)) as HttpWebRequest; 
if (request != null) 
{ 
    request.ContentType = "application/xml"; 
    request.Method = "POST"; 
}  

byte[] requestBodyBytes = Encoding.ASCII.GetBytes(XML); 
request.ContentLength = requestBodyBytes.Length; 
using (Stream postStream = request.GetRequestStream()) 
    postStream.Write(requestBodyBytes, 0, requestBodyBytes.Length); 


if (request != null) 
{ 
    var response = request.GetResponse() as HttpWebResponse; 
    if(response.StatusCode == HttpStatusCode.OK) 
    { 
     Stream responseStream = response.GetResponseStream(); 
     if (responseStream != null) 
     { 
      var reader = new StreamReader(responseStream); 

      responseMessage = reader.ReadToEnd(); 
     } 
    } 
    else 
    { 
     responseMessage = response.StatusDescription; 
    } 
}