2013-11-13 2 views
0

Мой исходный код:Android Studio - Http Post - Json - ошибка ответить плохой запрос

final Thread t = new Thread() { 

     public void run() { 
      Looper.prepare(); 
      HttpClient client = new DefaultHttpClient(); 
      HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); 
      HttpResponse response; 
      JSONObject obj = new JSONObject(); 


      try { 
       HttpPost post = new HttpPost("http://pc.dyndns-office.com/mobile.asp"); 

       obj.put("Model", ReadIn1); 
       obj.put("Product", ReadIn2); 
       obj.put("Manufacturer", ReadIn3); 
       obj.put("RELEASE", ReadIn4); 
       obj.put("SERIAL", ReadIn5); 
       obj.put("ID", ReadIn6); 
       obj.put("ANDROID_ID", ReadIn7); 
       obj.put("Language", ReadIn8); 
       obj.put("BOARD", ReadIn9); 
       obj.put("BOOTLOADER", ReadIn10); 
       obj.put("BRAND", ReadIn11); 
       obj.put("CPU_API", ReadIn12); 
       obj.put("DISPLAY", ReadIn13); 
       obj.put("FINGERPRINT", ReadIn14); 
       obj.put("HARDWARE", ReadIn15); 
       obj.put("UUID", ReadIn16); 

       StringEntity se = new StringEntity(obj.toString()); 
       se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); 
       post.setEntity(se); 
       post.setHeader("host", "http://pc.dyndns-office.com/mobile.asp"); 

       response = client.execute(post); 

       if (response != null) { 
        InputStream in = response.getEntity().getContent(); 
       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      Looper.loop(); 
     } 
    }; 

    t.start(); 
} 
} 

я хочу, чтобы отправить объект JSON на веб-сайте. Насколько я вижу, я устанавливаю заголовок, но все же я получаю это исключение, может кто-нибудь мне помочь?

(я использую Android-Studio) __

Edit: я не получаю никаких исключений больше, но до сих пор я не получаю пакет JSon.

Когда я вручную вызываю веб-сайт, я получаю запись в файле журнала.

Кто-нибудь знает, что случилось?

Edit2: Когда я отлаживаю, я получаю ответ «HTTP/1.1 400 плохой запрос». Я уверен, что это не проблема разрешения. Есть идеи?

+2

400 Bad запрос означает, что вы не посылали, что ожидал сервер. Что ожидает сервер? –

+0

ваш параметр хоста неправильный, я думаю, что это должно быть pc.dyndns-office.com. Взгляните [здесь] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23) – Blackbelt

+0

, когда мой параметр хоста был pc.dyndns-office.com, чем я стал исключением что хост не может быть нулевым. – user2978538

ответ

0

заменить StringEntity(String) на ByteArrayEntity(stringValue.getBytes("UTF8")); и использовать его.

, как:

httpPost.setEntity(new ByteArrayEntity(params.toString().getBytes("UTF8"))); 
HttpResponse response = httpClient.execute(httpPost); 

, где Params является JSONObject карты содержит входные параметры.

0

Try:

httpPost.setEntity(new ByteArrayEntity(jsonObject.toString().getBytes("UTF-8"))); 
Смежные вопросы