winform訪問webservice
⑴ c#winform怎麼調用webservice
建議這樣試試看:
親測可用,主要還是Url的拼接,這個需要客戶給出格式
/// <summary>
/// 與客戶WMS系統通訊獲取數據
/// </summary>
/// <param name="url">介面,需要拼接成客戶規定的格式</param>
/// <param name="data">請求數據,需要拼接成客戶規定的Json格式</param>
/// <returns>全部數據</returns>
public string Post(string url, string data)
{
try
{
//創建請求
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
//設置請求方法
request.Method = "Post";
request.Referer = "";
//將數據轉換為UTF8位元組流
byte[] bytes = Encoding.UTF8.GetBytes(data);
//設置發送的位元組數
request.ContentLength = bytes.Length;
//設置發送內容格式
request.ContentType = "application/json; charset=UTF-8";
//獲取用於寫入請求數據的流對象
Stream stream = request.GetRequestStream();
//向當前流寫入數據,發送請求
stream.Write(bytes, 0, bytes.Length);
//接收返迴流,通過Web訪問對象獲取響應內容
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//通過響應內容流創建StreamReader對象
//StreamReader sr = new StreamReader(request.GetRequestStream(), Encoding.UTF8);//寫錯,導致一直讀取不了數據
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
//讀取所有內容
string retString = sr.ReadToEnd();
//關閉流
sr.Close();
stream.Close();
if (response != null)
{
//關閉響應流
response.Close();
}
if (request != null)
{
//取消請求
request.Abort();
}
return retString;
}
catch (Exception ex)
{
throw ex;
}
}
}