У меня есть этот метод, который делает запрос PATCH на этот URL:BasicNetwork.performRequest: Неожиданный код ответа 400 для «URL» - Volley PATCH запрос
https://username.visualstudio.com/DefaultCollection/_apis/wit/workitems/8?api-version=1.0
Что делает этот метод делать: она обновляет workItem`s System.Title, который имеет идентификатор 8, в Microsoft Visual Studio - Team Foundation Server
public void testPostVolley(String url) {
/*Post data*/
JSONArray jsonBody = new JSONArray();
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("op","replace");
jsonObject.put("path","/fields/System.Title");
jsonObject.put("value","Welcome to the jungle");
jsonBody.put(jsonObject);
} catch (JSONException e) {
e.printStackTrace();
}
Log.d("JSON Array " , String.valueOf(jsonBody));
JsonArrayRequest postRequest = new JsonArrayRequest(Request.Method.PATCH, url,
jsonBody,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("Response Post Request", response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Handle Error
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", MainRecyclerListView.TOKEN);
headers.put("Content-Type", "application/json-patch+json");
return headers;
}
};
queue.add(postRequest);
}
}
Я пытался в POSTMAN ш с теми же заголовками и тем же телом, и это работает, но в приложении для Android я получаю этот ответ:
07-06 13: 05: 49.253 2599-11381/ro.webivo.pockettask E/Volley: [209] BasicNetwork.performRequest: Неожиданный код ответа 400 для https://username.visualstudio.com/DefaultCollection/_apis/wit/workitems/8?api-version=1.0
Я вошел также тело I`m отправки и это одно:
07-06 13: 05: 49,017 2599-2599/ro.webivo.pockettask D/JSON Array: [{"op": "replace", "path": "/ fields/System.Title", "value": "Welcome to the jungle"}]
Официальный API для запроса PATCH здесь:
https://www.visualstudio.com/en-us/docs/integrate/api/wit/work-items
Не могли бы вы мне помочь? Это проблема Воллей?
Спасибо
В корпусе ответа должно быть сообщение об ошибке, когда вы получаете «400-й запрос» из API-интерфейса VSTS Rest, можете ли вы проверить и передать сообщение тела? И аналогичный вопрос, связанный с Android Volley: http://salesforce.stackexchange.com/questions/50382/requestforupdate-always-returns-400 –
Сообщение об ошибке в ответе VolleyError - это тот, который я вам дал. Вы знаете способ настройки ответа об ошибке? – dragosiv
Итак, я попытался изменить Request.Method на POST и добавить разные заголовки, такие как: headers.put («X-HTTP-Method-Override», «PATCH») ;, и на этот раз я возвращал некоторые ответы от VSTS Службы отдыха говорят, что они принимают только Content-Type of application/json-patch + json. Я изменил его, но я снова получаю ответ 400 и ничего больше. Я попытался зарегистрировать файл error.networkresponse.data, но он имеет значение null. Есть идеи? – dragosiv