Редактировать:
Проведя еще несколько экспериментов, я обнаружил, что запрос будет работать, только если все значения указаны в строке JSON.То есть это не будет работать
{"Text":"test","RatingValue":0.0,"LocationID":5}
, и это будет
{"Text":"test","RatingValue":"0.0","LocationID":"5"}
Я не понимаю, почему.Кажется, что первая строка является допустимой строкой JSON.Это причуда с WCF?
Исходное сообщение
Я пытаюсь опубликовать новый предмет в коллекции с Android.Я продолжаю получать код ответа 400: Плохой запрос.Я не понимаю, что я делаю неправильно, и я надеялся, что кто-то сможет мне помочь.Вот код Java.
HttpURLConnection conn = (HttpURLConnection) uri.toURL().openConnection();
conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("User-Agent", userAgent);
conn.setChunkedStreamingMode(0);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.connect();
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.write(data.getBytes());
out.flush();
int code = conn.getResponseCode();
String message = conn.getResponseMessage();
conn.disconnect();
Данные представляют собой строку JSON, которая выглядит следующим образом:
{"Text":"test","RatingValue":3.0,"ReviewID":0,"LocationID":5}
В этом случае ReviewID является первичным ключом.
URL-адрес запроса указывает на коллекцию рейтингов.Если я вставлю то же место в мой браузер, он успешно запросит коллекцию.Это выглядит примерно так:
http://localhost/DataService.svc/Ratings