Rest API调用会在post上引发异常。那是
远程服务器返回错误:(404)Not Found。
以下代码调用api
try
{
RestClient client = new RestClient(...);
string apiResponse = client.MakeRequest(..);
}
catch (WebException wex)
{
throw wex;
}
fiddler捕获流量时效果很好。但如果小提琴手没有捕获,那么客户端会收到以下异常。
远程服务器返回错误:(502)Bad Gateway。
PS。 Postman(Chrome扩展程序)和Soap UI也收到了404:未找到
更新: 这是代码,调试时收到错误
public string MakeRequest(string parameters)
{
var request = (HttpWebRequest)WebRequest.Create(_RestEndPoint + (parameters ?? String.Empty));
request.Proxy = WebRequest.DefaultWebProxy;
request.ContentLength = 0;
request.Method = _Method.ToString();
request.ContentType = _ContentType;
request.KeepAlive = true;
if (_RequestHeader != null)
{
foreach (var hdr in _RequestHeader)
{
request.Headers.Add(hdr.Key, hdr.Value);
}
}
if (_Method == HttpVerb.POST || _Method == HttpVerb.PUT)
{
if (!string.IsNullOrEmpty(_PayLoad))
{
var bytes = Encoding.UTF8.GetBytes(_PayLoad);
request.ContentLength = bytes.Length;
using (var writeStream = request.GetRequestStream())
{
writeStream.Write(bytes, 0, bytes.Length);
writeStream.Close();
}
}
}
using (var response = (HttpWebResponse)request.GetResponse())//Error returns here
{
var responseValue = string.Empty;
checkForResponseExceptions(response.StatusCode, parameters);
// grab the response
using (var responseStream = request.GetResponse().GetResponseStream())
{
if (responseStream != null)
{
using (var reader = new StreamReader(responseStream))
{
responseValue = reader.ReadToEnd();
}
}
}
return responseValue;
}
}
任何人都可以指出我错过了什么吗?
更新2:
我尝试过以下代码并遇到同样的问题
if (_Method == HttpVerb.POST)
{
using (var wb = new WebClient())
{
wb.Headers[HttpRequestHeader.ContentType] = _ContentType;
foreach (var hdr in _RequestHeader)
{
wb.Headers.Add(hdr.Key, hdr.Value);
}
try
{
var response = wb.UploadString(_RestEndPoint + (parameters ?? String.Empty), _Method.ToString(), _PayLoad);
}
catch (Exception ex)
{
throw ex;
}
}
}
所以,我想网络设置中出现了问题,因为@GSerg于12月4日10:01发表了评论。但IE设置的连接选项卡中没有设置代理。我应该检查什么以及如何解决这个问题?
答案 0 :(得分:0)
HTTP错误按“错误类型”
分组4xx错误是“客户端”错误,链接到用户犯错误的错误,如404是客户端要求服务器上不存在的东西。
5xx错误是“服务器”错误,这意味着由于内部问题,服务器在回答请求时遇到问题。
502坏网关通常是在服务器无法从其他服务器获取请求时发送的。在你的情况下,它可能来自提琴手,因为你可能仍在向被停止的提琴手提出查询,因此无法回答。