Rest API 呼び出しは、投稿時に例外をスローします。そしてそれは
リモート サーバーがエラーを返しました: (404) 見つかりません。
APIを呼び出す次のコード
try
{
RestClient client = new RestClient(...);
string apiResponse = client.MakeRequest(..);
}
catch (WebException wex)
{
throw wex;
}
フィドラーがトラフィックをキャプチャしているときは正常に機能します。ただし、フィドラーがキャプチャしていない場合、クライアントは次の例外を受け取りました。
リモート サーバーがエラーを返しました: (502) ゲートウェイが正しくありません。
PS。Postman (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 が 12 月 4 日 10:01 にコメントしたように、ネットワーク設定に何か問題があると思います。ただし、IE 設定の接続タブにプロキシが設定されていません。この問題を解決するには、何をどのように確認すればよいですか??