来自 .net C# 的 WebService 调用出现错误:(502) 网关错误
Posted
技术标签:
【中文标题】来自 .net C# 的 WebService 调用出现错误:(502) 网关错误【英文标题】:WebService Call from .net C# getting error : (502) Bad Gateway 【发布时间】:2021-06-22 20:44:18 【问题描述】:尝试从 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# 代码中做错了什么?
【问题讨论】:
502是5xx错误(服务器错误),暗示这很可能是服务器的问题,而不是客户端的问题。 这可能会有所帮助:***.com/questions/3957915/… 【参考方案1】:WebRequest 的 uri 具有查询参数 &format=csv
。也许这就是您收到 502 的原因。Python 请求缺少该查询参数。您是否通过删除该部分来尝试 WebRequest?
【讨论】:
您尝试过使用 HttpWebRequest 和 HttpWebResponse 吗?也许值得一试?它的工作方式与 WebRequest 和 WebResponse 相同。 我现在很感兴趣。使用 Create(Uri) 代替 Create(String) 怎么样?我非常怀疑这是请求格式的方式。 docs.microsoft.com/en-us/dotnet/api/…【参考方案2】:可能是内容类型不正确或用户代理的信息错误。邮递员可能会在您不知情的情况下设置这些值。可能会尝试在异常中查看是否有响应流并通过流读取器读取它,以查看是否有更多您没有看到的信息可以为您指明正确的方向。
【讨论】:
【参考方案3】:最终使用了 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);
【讨论】:
以上是关于来自 .net C# 的 WebService 调用出现错误:(502) 网关错误的主要内容,如果未能解决你的问题,请参考以下文章