REST API 补丁请求
REST API PATCH request
我正在尝试发送请求并从 MailChimp API 获取响应。 .到目前为止,GET、POST 和 DELETE 运行良好,但是 PATCH 总是导致 Bad Request 你能识别这段代码中的错误吗?
string data = "{\"name\": \"TestListTWOTWOTWO\"}";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Headers[HttpRequestHeader.Authorization] = accessToken;
request.Method = "PATCH";
request.ContentType = "text/plain;charset=utf-8";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] bytes = encoding.GetBytes(data);
request.ContentLength = bytes.Length;
using (Stream requestStream = request.GetRequestStream())
{
// Send the data.
requestStream.Write(bytes, 0, bytes.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
错误发生在request.GetResponse()行;
这是一个未处理的 WebException 说远程服务器返回错误:(400)错误请求
检查错误响应后,这是它说的内容
"Your request doesn't appear to be valid JSON:
\nParse error on line 1:\nPATCH /3.0/lists/9bb\n^\n
Expected one of: 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['"
原因 PATCH
是一个相当新的 RFC,因此您不会期望有那么多的服务支持它。你最好看看服务是否支持。
您使用 json 格式发送请求,但将内容类型设置为 "text/plain" 可以吗?
许多 C# 库似乎尝试使用 Expect: 100-Continue
header,MailChimp/Akamai 在与 PATCH 结合使用时会出现问题。你有两个选择。
在您的 HTTP 库中关闭 Expect: 100-Continue。在一个 C# 库中,您可以使用像 Client.DefaultRequestHeaders.ExpectContinue = False
这样的代码行来做到这一点
使用 X-Http-Method-Override
header 通过 HTTP POST 隧道化 PATCH 请求。 Here's more details on that header.
我正在尝试发送请求并从 MailChimp API 获取响应。 .到目前为止,GET、POST 和 DELETE 运行良好,但是 PATCH 总是导致 Bad Request 你能识别这段代码中的错误吗?
string data = "{\"name\": \"TestListTWOTWOTWO\"}";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Headers[HttpRequestHeader.Authorization] = accessToken;
request.Method = "PATCH";
request.ContentType = "text/plain;charset=utf-8";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] bytes = encoding.GetBytes(data);
request.ContentLength = bytes.Length;
using (Stream requestStream = request.GetRequestStream())
{
// Send the data.
requestStream.Write(bytes, 0, bytes.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
错误发生在request.GetResponse()行; 这是一个未处理的 WebException 说远程服务器返回错误:(400)错误请求
检查错误响应后,这是它说的内容
"Your request doesn't appear to be valid JSON:
\nParse error on line 1:\nPATCH /3.0/lists/9bb\n^\n
Expected one of: 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['"
原因 PATCH
是一个相当新的 RFC,因此您不会期望有那么多的服务支持它。你最好看看服务是否支持。
您使用 json 格式发送请求,但将内容类型设置为 "text/plain" 可以吗?
许多 C# 库似乎尝试使用 Expect: 100-Continue
header,MailChimp/Akamai 在与 PATCH 结合使用时会出现问题。你有两个选择。
在您的 HTTP 库中关闭 Expect: 100-Continue。在一个 C# 库中,您可以使用像
Client.DefaultRequestHeaders.ExpectContinue = False
这样的代码行来做到这一点
使用
X-Http-Method-Override
header 通过 HTTP POST 隧道化 PATCH 请求。 Here's more details on that header.