Детали WebException изменены на VS.Net
Вызов API Rest создает исключение при публикации. И это
Удаленный сервер возвратил ошибку: (404) Not Found.
Следующий код, вызывающий API
try
{
RestClient client = new RestClient(...);
string apiResponse = client.MakeRequest(..);
}
catch (WebException wex)
{
throw wex;
}
Он отлично работает, когда скрипач захватывает трафик. Но если скрипач не захватывает, клиент получил следующее исключение.
Удаленный сервер возвратил ошибку: (502) Bad Gateway.
PS. Почтальон (расширение Chrome) и Soap UI также получили 404: Not Found
ОБНОВЛЕНО: это код, и при отладке получена ошибка
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 прокомментировал 4 декабря в 10:01. Но на вкладке подключения настроек IE нет прокси-сервера. Что и как я должен проверить, чтобы избавиться от этой проблемы?
1 ответ
Ошибки HTTP сгруппированы по типу ошибок
Ошибки 4xx - это "клиентские" ошибки, ошибки, связанные с тем, что пользователь совершил ошибку, например, 404 - это клиент, запрашивающий что-то, чего не существует на сервере.
Ошибки 5xx - это "серверные" ошибки, означающие, что на сервере возникла проблема с ответом на запрос из-за внутренних проблем.
Плохой шлюз 502 обычно отправляется с сервера, когда он не может получить запрос от другого сервера. В вашем случае это может происходить из фиддлера, потому что вы, вероятно, все еще делаете запрос фиддлеру, который остановлен и поэтому не может ответить.