Код работает в Xamarin Android, но не работает на Java (HttpPost JSON)

Я начал развиваться в Xamarin, а затем решил, что лицензия может быть немного дорогой для игры, поэтому я переношу свой код на java.

У меня небольшой кусок, который выполняет POST с объектом JSON, и он работает в Xamarin и работает на Java.

Xamarin:

var client = new HttpClient (); var content = new FormUrlEncodedContent(new Dictionary<string, string>() { {"action", "getEpisodeJSON"}, {"episode", "11813"} }); client.DefaultRequestHeaders.Referrer = new Uri(link); var resp = client.PostAsync("http://www.ts.kg/ajax", content).Result; var repsStr = resp.Content.ReadAsStringAsync().Result; dynamic res = JsonConvert.DeserializeObject (repsStr); 

Android:

  HttpClient httpclient = new DefaultHttpClient(); // 2. make POST request to the given URL HttpPost httpPost = new HttpPost("http://www.ts.kg/ajax"); String json = ""; // 3. build jsonObject JSONObject jsonObject = new JSONObject(); jsonObject.accumulate("action", "getEpisodeJSON"); jsonObject.accumulate("episode", "11813"); // 4. convert JSONObject to JSON to String json = jsonObject.toString(); // 5. set json to StringEntity StringEntity se = new StringEntity(json); // 6. set httpPost Entity httpPost.setEntity(se); // 7. Set some headers to inform server about the type of the content httpPost.setHeader("Accept", "application/json"); httpPost.setHeader("Content-type", "application/json"); httpPost.addHeader("Referer", "http://www.ts.kg"); // 8. Execute POST request to the given URL HttpResponse httpResponse = httpclient.execute(httpPost); // 9. receive response as inputStream InputStream inputStream = httpResponse.getEntity().getContent(); // 10. convert inputstream to string String result; if(inputStream != null) result = convertInputStreamToString(inputStream); 

Каков правильный способ сделать такой POST в Android?

UPD Текущая проблема заключается в том, что я получаю пустую строку результата;

  private static String convertInputStreamToString(InputStream inputStream) throws IOException{ BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream)); String line = ""; String result = ""; while((line = bufferedReader.readLine()) != null) result += line; inputStream.close(); return result; } 

Я закончил поиск всех запросов своего устройства через Fiddle (хороший учебник находится здесь: http://tech.vg.no/2014/06/04/how-to-monitor-http-traffic-from-your-android-phone -проходный скрипач / )

Разница была в cookie, поэтому я использовал переменную HttpContex, как описано здесь: Android HttpClient Cookie

И у меня также был другой Content-Type, поэтому я устанавливаю этот заголовок вручную как это:

 httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded"); 
Intereting Posts
Как я действительно использую ffmpeg на Android? Ошибка android динамически загружает libc ++. Поэтому родная библиотека Android – как сделать приложение приложения по умолчанию для приложения по умолчанию API доступа к декодированию JPEG HW Android: одновременное воспроизведение большого количества видео Как показать диалог выбора местоположения, например, карты Google? Свойства системы Android – отключение их в командной строке Как загрузить или получить веб-страницу в онлайн-режиме и в автономном режиме в приложении для Android? Android: EditText не заполняет ScrollView и RelativeLayout Android: значок APK не устанавливается Приземление сдерживается libgdx Обновление данных в ListFragment как часть ViewPager Android RatingBar показывает более 5 звезд Параметр макета Android InputType – как разрешить отрицательные десятичные знаки? Как обнаружить нажатие кнопки «Недавние приложения» (Honeycomb +)