Хотелось бы узнать, у кого-нибудь есть пример кода о том, как использовать JsonWriter для публикации данных JSON в веб-сервис WCF с Android?
Я протестировал свой WCF с помощью Fiddler 4 (Composer с данными POST json), и он дал мне верный результат.
Однако, когда я тестировал свое приложение для Android, которое использует JsonWriter, я не увидел никаких действий на Fiddler (я настроил Fiddler для проверки сетевого трафика моего эмулятора Android, кстати, я тестирую на эмуляторе Android.).
С помощью того же приложения для Android я могу вызвать GET с помощью JsonReader для моего WCF и получить правильный ответ.
Просто вызов POST с JsonWriter не получил ни кода ответа, ни действия в Fiddler.
Что касается JsonWriter (и Reader), я обращаюсь к разработчику Android >> JsonWriter
Вот мои результаты тестов (Get and Post) с эмулятором GET и POST.
Вот мои результаты теста с FOST FDDLER.
Сначала это дало мне результат 307, а затем 200.
И вот как я использую JsonWriter для публикации (этот блок был из AsyncTask).
try
{
Log.d("TEST_JSON", "URL: " + params[0]);
URL url = new URL(params[0]);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Accept","application/json");
conn.setRequestProperty("Content-Type","application/json");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setAllowUserInteraction(false);
// conn.connect();
OutputStream out = conn.getOutputStream();
JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8"));
try
{
writer.setIndent(" ");
if(params[1].trim() == "ARRAY")
{
// Write array to WCF.
}
else if(params[1].trim() == "OBJ")
{
// Write object to WCF. <<== I am testing with one object.
writer.beginObject();
writer.name("ShipNo").value("SI10101");
writer.name("DoNo").value("DO230401");
writer.name("PartNo").value("102931-1201");
writer.name("Qty").value(1);
writer.name("ShipIn").value(1);
writer.endObject();
}
}
finally
{
writer.close();
out.close();
}
// If I enable below blocks, I will see 307 response code in Fiddler.
/*
conn.connect();
int responseCode = conn.getResponseCode();
Log.d("TEST_JSON", "Code: " + String.valueOf(responseCode));
*/
Log.d("TEST_JSON", "Finish sending JSON.");
conn.disconnect();
}
catch (IOException e)
{
Log.e("TEST_JSON",e.getMessage()); // <<-- No error from this try catch block.
}
Я пытался и до сих пор не могу понять, почему JsonWriter не сработал на моем WCF (я прикрепил свой WCF к моей службе localhost, только прямой POST Fiddler достигнет точки останова в моем проекте WCF, в то время как приложение Android не дотянулось до Это). Я следую точному примеру с сайта Android Developer, хотя. Я Google и не нашел ни одного сайта по использованию JsonWriter с OutputStreamWriter (я видел некоторые сообщения, используя StringWriter).
Могу ли я узнать, где мой код неверен?