Как мне передать JSONObject в PHP-файл?

#java #android #json #httpclient

#java #Android #json #httpclient

Вопрос:

Я пытаюсь отправить некоторые данные, отформатированные как JSONObject, на веб-сервер. Насколько я понимаю, это делается с помощью httpclient на Android, а затем php-файла на сервере. Если это не так, остановитесь здесь и поправьте меня, в противном случае вот как я пытаюсь отправить данные:

 HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://myhost/data.php");
            try {
                String UN = username.getText().toString();
                String PW = password.getText().toString();
                String jString = "{"login": { "username": "" UN   "","password": "" PW ""}}";
                JSONDATA = new JSONObject(jString);
                //JSONDATA = new JSONObject();
                //JSONDATA.put("username", UN);
                //JSONDATA.put("password", PW);
  

должен ли я использовать: httppost.setEntity(новый UrlEncodedFormEntity(JSONDATA));

или я должен делать это следующим образом:

                 StringEntity se = new StringEntity(JSONDATA.toString());  
                se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
                HttpEntity entity;
                entity = se;
                httppost.setEntity(entity);
                HttpResponse response;
                response = httpclient.execute(httppost);
  

Ответ №1:

Вопрос на самом деле в том, как вы планируете извлекать данные на сервере? Как выглядит ваш PHP? Что может быть проще всего, так это просто передать JSON в качестве параметра:

 HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://myhost/data.php");
try {
   String UN = username.getText().toString();
   String PW = password.getText().toString();
   String jString = "{"login": { "username": "" UN   "","password":"" PW ""}}";
   List <NameValuePair> nvps = new ArrayList <NameValuePair>();
   nvps.add(new BasicNameValuePair("value", jString));
   httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));                 

   HttpResponse response;
   response = httpclient.execute(httppost);
  

и затем на стороне сервера вы можете просто сделать

 <?php
   $obj = json_decode($_POST['value']);
  

чтобы извлечь его.