Android如何通过HttPos

时间:2015-12-18 15:36:04

标签: java php android json

这是我在浏览器中发布的php post查询:

 {"message":"Required field(s) is missing"}

我认为这是jsonObject,因为在phpScript中我已经在Json中编码了它。然后我的问题是我想在我的Android应用程序中获取结果内容..请注意,我正在做一个简单的登录Android系统.....

现在当我试图在我的Android代码中获取它时,我得到了这个异常:JSON异常****** java.lang.String类型的值< \ br无法转换为JSONObject

这是我的Android代码:

  //setting the valuesPairs
  List<NameValuePair> nameValuePairs= new ArrayList<NameValuePair>(1);

  //setting the valuesPairs
  nameValuePairs.add(new BasicNameValuePair("name", nameData));
  nameValuePairs.add(new BasicNameValuePair("email", emailData));
  try {
      //setting up the default HttpClient
      HttpClient httpClient=new DefaultHttpClient();

      /*setting up the POSTHttp methodd and parsing the url in case of online and the ip adress in case of localhost database
      and the phifile.*/
      HttpPost httpPost=new HttpPost("http://192.168.1.100:80/phpprojecttest/EmailLogin.php");


      //Parsing the NameValuesPairs inside the HttpPost
      System.out.println("************Opening URL And Setting POst PArm In it  ***********:" );
      httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

      //getting the response      
      HttpResponse  response=httpClient.execute(httpPost);        
      response.getStatusLine();
      System.out.println("Le statut de votre requète est   :" +response.getStatusLine().getStatusCode());

      //Setting up the Entity         
      HttpEntity httpEntity=response.getEntity();
      inpuStream=httpEntity.getContent();     


      BufferedReader reader= new BufferedReader(new InputStreamReader(inpuStream));  
      String line;


      // JSONObject jsonObject= new JSONObject(inpuStream);

      String myres;

      while ((line = reader.readLine()) != null) {
          reponseHTTP.append(line +"\n");
          System.out.println("*Reading***"+ reponseHTTP);
      }

      //on converti le text de la response dasn un Object Json
      JSONObject jsonObject= new JSONObject(reponseHTTP.toString());      
      String stringObject=jsonObject.getString("message");// on prend la cle car on s'est au préalable que c'est un double

      System.out.println("********"+ stringObject);
      System.out.println("*******FUCK******"+reponseHTTP.toString());


  } catch (ClientProtocolException e) {
      Log.e("ClientProtocol***********", e.getMessage());
  } catch (IOException e) {
      Log.e("IOExeption***********", e.getMessage());     
  /*} catch (JSONException e) {       
      Log.e("JSON Avecs Ses Erruers***********", e.getMessage());
  */ } catch (JSONException e) {
      System.out.println("*+JSON EXception*****"+ e.getMessage());
  }

2 个答案:

答案 0 :(得分:1)

我可能是错的朋友,但我相信你正在返回HTML代码  &#34; *现在,当我试图在我的Adroide代码中获取它时,我得到了以下异常:JSON EXception ******无法将类型为java.lang.String的值&lt; \ br转换为JSONObject& #34;

你会看到它所说的位置&#34;值&lt; \ br &#34; 但是你想要检索的价值是&#34; {&#34;消息&#34;:&#34;缺少必填字段&#34;}&#34;正确?

我建议打印出reponseHTTP.toString()的结果,然后在尝试转换之前确保它是json。 :)

答案 1 :(得分:0)

感谢您对我的问题的快速回复,然后我解决了我的问题

我使用GetMethod获取My JSONObject强大然后它对我有用这是完整的工作代码......

//setting up the default HttpClient
                    HttpClient httpClient=new DefaultHttpClient();

                    /*setting up the POSTHttp methodd and parsing the url in case of online and the ip adress in case of localhost database
                    and the phifile.*/
                    HttpGet httpGet=new HttpGet("http://192.168.1.100:80/phpprojecttest/EmailLogin.php?name="+nameData+"&email="+emailData);


                    try {// on essay d'envoyer la requette
                        HttpResponse response=httpClient.execute(httpGet);

                        //on verify si c'est okey via le status doit etre = 200 pour true
                        StatusLine statusLine= response.getStatusLine();
                        int statusCode=statusLine.getStatusCode();

                        if (statusCode == 200) {
                            HttpEntity  entity=response.getEntity(); // on recupere le corp de la requette qui contien du Json
                           // on lit le corp via InpuStream
                            InputStream content=entity.getContent();//ici onrecuper des données binaire
                            // onlit le corp du reponse ligne parligne
                            BufferedReader reader= new BufferedReader(new InputStreamReader(content));  //avecIpStreamReader on construit le caracteère et avec buffRea on construit la ligne
                            String line;
                            while ((line = reader.readLine()) != null) {
                                reponseHTTP.append(line);
                        }
                            System.out.println("---getting Code Statuts--- " +statusCode);
                            //on converti le text de la response dasn un Object Json
                            JSONObject jsonObject= new JSONObject(reponseHTTP.toString());

                            System.out.println("---Debut dgetting--- " +statusCode);
                            String prixFrom=jsonObject.getString("message");// on prend la cle car on s'est au préalable que c'est un double

                            System.out.println("*+++++++++++*"+ prixFrom);


                        } else {

                            System.out.println("*****************EUrror CODES " +statusCode);
                        }

                    } catch (JSONException e) {

                        System.out.println("*******EUrrorJSON**" +e);
                    } catch (ClientProtocolException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }