簡體   English   中英

使用POST方法調用webservice(asmx)

[英]call webservice(asmx) Using POST method

嗨,我想從C#中的桌面應用程序調用Web應用程序的Web服務,但是我嘗試了此操作,但是它給內部服務器錯誤500.my Web服務的URL太長了,因此我需要使用POST方法傳遞它。 我的代碼有什么不對? 請提出任何建議。

 private void button1_Click(object sender, EventArgs e)
        {
            //HttpWebRequest request = (HttpWebRequest)WebRequest.Create("URL OF Webservice");
            //WebResponse response = request.GetResponse();
            //response.Close();

            using (var wb = new WebClient())
            {

                var data = new NameValueCollection();
                data["authU"] = "value";
                data["authP"] = "value";
                data["cmp"] = "value";
                data["sales_id"] = "value";
                data["Login"] = "value";
                data["total_amount"] = "value";
                data["total_discount"] = "value";
                data["net_amount"] = "value";
                data["change"] = "value";
                data["tax"] = "value";
                data["ip"] = "value";
                data["Tran_Type"] = "value";
                data["mac_id"] = "value";
                data["ref_id"] = "value";
                data["venue_id"] = "value";
                data["store_name"] = "value";
                data["actual_total_amount"] = "value";
                data["temp_sale_id"] = "value";
                data["is_return"] = "value";
                data["created_date"] = "2018-06-14 14:26:09";
                data["modify_date"] = "2018-06-14 14:26:09";
                data["mode"] = "value";
                data["value"] = "value";
                data["machine_id"] = "value";
                data["location_id"] = "value";
                data["input_amount"] = "value";
                data["sale_type"] = "value";
                data["is_table"] = "value";
                data["Payment_Date"] = "2018-06-14 14:26:09";
                data["Payment_Amount"] = "value";
                data["Table_name"] = "value";
                data["is_close"] = "value";
                data["values"] = "value";

                var response = wb.UploadValues("http://localhost:53653/POS_WebService.asmx/Sales_Master_Full", "POST", data);
                string responseInString = Encoding.UTF8.GetString(response);

將數據發布到Web服務不是與之交互的標准方法。 您在以下情況下指向WSDL的副本:

http://localhost:53653/POS_WebService.asmx?WSDL

並讓VS創建一個用於調用函數的代理包裝器。

有關如何添加參考的信息,請參見https://stackoverflow.com/a/12710348/656243 從那里開始,假設您將引用添加為WebService1,則可以將該函數作為Webservice的成員進行調用:

WebService1 svc = new Webservice1;
var data = svc.Sales_Master_Full();

就像是正常的C#函數一樣。

您需要按如下所示設置HTTP內容類型標頭:

using (var wb = new WebClient())
{
    wb.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";

    var data = new NameValueCollection();
    // ...
    var response = wb.UploadValues("http://localhost:53653/POS_WebService.asmx/Sales_Master_Full", "POST", data);
    // ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM