Я пытаюсь отправить некоторые данные в REST API. Документация API говорит мне, что я должен использовать PATCH и предоставлять данные как JSON. API также требует oAuth 2.0 для вызова, поэтому я сначала беру маркер доступа и добавляю его к вызову api url.Метод HttpWebRequest PATCH и JSON дает неверный запрос
У меня есть следующий код:
public MyResponse HttpPatch(
string url,
string content,
Dictionary<string, string> headers,
string contentType = "application/json")
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var request = (HttpWebRequest)WebRequest.Create(Uri.EscapeUriString(url));
if (request == null)
throw new ApplicationException(string.Format("Could not create the httprequest from the url:{0}", url));
request.Method = "PATCH";
foreach (var item in headers)
request.Headers.Add(item.Key, item.Value);
UTF8Encoding encoding = new UTF8Encoding();
var byteArray = Encoding.ASCII.GetBytes(content);
request.ContentLength = byteArray.Length;
request.ContentType = contentType;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
try
{
var response = (HttpWebResponse)request.GetResponse();
return new MyResponse(response);
}
catch (WebException ex)
{
HttpWebResponse errorResponse = (HttpWebResponse)ex.Response;
return new MyResponse(errorResponse);
}
}
В блоке попробовать, я получаю сообщение об ошибке на .GetResonse, которая говорит "(400) Bad Request". Значение I обеспечивает методу:
URL = https://api.myserver.com/v1/users/1234?access_token=my_access_token (MyServer и my_access_token имеют реальные значения в моем коде)
содержания = LANG = фр & национальности = FR & страны = FR & first_name = John & last_name = Doe
заголовки = словарь с 1 элемент: { "Authorization", "ApiKey MyUser: MyKey"} (MyUser и MyKey имеют действительные значения в моем коде)
contentType = "application/json"
Есть ли что-то очевидное, что я отсутствую, что может объяснить ошибку «плохого запроса»? Каковы могут быть причины этой ошибки?
Ток доступа, который я использую, верен, URL конечной точки верен. Я не уверен в значении «PATCH» для метода, могу ли я сделать это так? Поскольку документация MSDN не упоминает об этом возможные значения: https://msdn.microsoft.com/nl-be/library/system.net.httpwebrequest.method(v=vs.110).aspx
потянув меня за волосы и изо всех сил в течение 2 дней сейчас, чтобы получить вызов работает, так что, надеюсь, кто-то может показать мне свет дают мне некоторые хорошие указатели положить я на правильном пути?