2016-03-16 4 views
0

Я работаю с API Basecamp, который является API REST (JSON), используя базовую HTTP-аутентификацию через HTTPS.REST JSON GET - 400 Bad Request

Это должно быть запрос GET, но когда я запускаю мой код, используя GET Я получаю:

Не удается отправить контент-тело с этим глаголом типа

Когда я запускаю его как столбу, я получаю:

{ "статус": "400", "ошибка": "Bad Request"}

Кто-нибудь знает, почему это может произойти?

using (var httpClient = new HttpClient()) { 

     string userName = "[email protected]"; 
     string password = "somepassword"; 

     var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", userName, password))); 

     httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials); 

     HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, "https://correctUrlHere); 
     requestMessage.Headers.Add("User-Agent", "TheProject ([email protected])"); 
     requestMessage.Content = new StringContent(string.Empty, Encoding.UTF8, "application/json"); 

     var response = await httpClient.SendAsync(requestMessage); 

     var responseContent = await response.Content.ReadAsStringAsync(); 

     Console.WriteLine(responseContent); 
    } 

В этом коде я явно выгружена имя пользователя, пароль, имя проекта и URL, но в самом коде они все правильно.

+0

Обычно статус 400 указывает, что возникла проблема с переданной полезной нагрузкой. Не так сильно синтаксис, но бизнес-логика на сервере ему не понравилась (неправильные значения параметров, отсутствие параметров, отсутствующий параметр и т. Д.). Обычно это зависит от того, кто реализовал службу, чтобы убедиться, что верный тип ответа возвращен (это может быть даже проблема проверки подлинности, но неверный код ответа). Лучше всего связаться с владельцем API и спросить их. – Igor

+0

Кстати, это [это API] (https://github.com/basecamp/bcx-api), о котором вы говорите? Вы должны попробовать их пример скручивания и посмотреть, можете ли вы подключиться таким образом с вашими учетными данными, таким образом, у вас есть полный самодостаточный пример, который вы могли бы дать, если вы уже застряли там. Также единственное, что я прочитал около 400 на их веб-сайте, - это если вы не предоставляете агент-агент (который вы делаете), но, возможно, его не распознают в своей системе. – Igor

ответ

1

Запросы GET должны передавать свои параметры в качестве запроса URL-адреса, а не как тело запроса.

http://example.com?p1=1&p2=helloworld 

Если у вас нет контентов, о чем вы можете предположить в своем примере, оставьте его в запросе.

Результат BadRequest указывает на некоторую ошибку с вашей полезной нагрузкой (опять же: содержимое кажется пустым).

+0

Это сделало. Я удалил строку, которая установила контент, изменила его на запрос GET и работает как ожидалось. – Patrick