簡體   English   中英

來自 .net C# 的 WebService 調用出現錯誤:(502) 網關錯誤

[英]WebService Call from .net C# getting error : (502) Bad Gateway

嘗試從 C# 調用 WebServices 並出現以下錯誤:

System.Net.WebException: 'The remote server returned an error: (502) Bad Gateway

代碼:

WebRequest request = WebRequest.Create("https://xxxxx/cgi/webservice.pl?function=get_latest_ts_values&site_list=130105B&datasource=AT&varfrom=10.00&varto=10.00&lookback=60&format=csv");
        request.Method = "GET";
        WebResponse response = request.GetResponse();
        using (Stream dataStream = response.GetResponseStream() )
        {
            StreamReader reader = new StreamReader(dataStream);
            string responseFromServer = reader.ReadToEnd();
            Console.WriteLine(responseFromServer);
            Console.ReadLine();
        }

但是當我使用 Postman 或只是在瀏覽器中復制 url 並且在以下 python 代碼中也可以正常工作:

import requests

dataload = {}
dataurl = "https://xxxxx/cgi/webservice.pl?function=get_latest_ts_values&site_list=130105B&datasource=AT&varfrom=10.00&varto=10.00&lookback=60"
headers = {}
response = requests.request("GET", dataurl, headers=headers, data=dataload)
for dataresp in response:
    print(dataresp)

C# 代碼我做錯了什么?

WebRequest 的 uri 具有查詢參數&format=csv 也許這就是您得到 502 的原因。 Python 請求缺少該查詢參數。 您是否通過刪除該部分來嘗試 WebRequest?

可能是不正確的內容類型或具有錯誤信息的用戶代理。 Postman 可能在您不知情的情況下設置這些值。 可能會嘗試在異常中查看是否有響應 stream 並通過流式閱讀器讀取它,以查看是否有更多您沒有看到的信息可以為您指明正確的方向。

最終使用 RestSharp 並且工作正常。 https://www.nuget.org/packages/RestSharp

 string Uri = "https://xxxx/cgi/webservice.pl?xxxx";
 var client = new RestSharp.RestClient(Uri);
 client.Timeout = -1;
 var request = new RestRequest(Method.GET);
 IRestResponse response = client.Execute(request);
 Console.WriteLine(response.Content);

暫無
暫無

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

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