2013-02-12 2 views
1

Я не получаю это мой _POST пустJSON _POST пустой от андроида HttpPost

создать JSONObject я передать его в HttpPost Как это:

HttpPost post = new HttpPost(URL); 

       StringEntity se = new StringEntity(json.toString()); 
       se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, 
         "application/json")); 
       post.setEntity(se); 
       response = client.execute(post); 

но он показывает, как пустой массив

Вот полный код

Создать мне JSON объект (отлаживать это и wactch его заполнить

public static final JSONObject GetJSONObject(Customer customer) { 

     try { 
      JSONObject values = new JSONObject(); 
      values.put(Customer.KEY_NAME, customer._name); // Contact Name 
      values.put(Customer.KEY_PH_NO, customer._phone); // Contact Phone 
      values.put(Customer.KEY_EMAIL, customer._email); 
      values.put(Customer.KEY_UUID, customer._UUID); 
      values.put(Customer.KEY_GEOUUID, customer._geoUUID); 
      values.put(Customer.KEY_SALESREPUUID, customer._salesRepUUID); 
      values.put(Customer.KEY_CUST_LAST_UPDATE, customer.last_update); 
      values.put(Customer.KEY_CUST_NOTES, customer._notes); 
      return values; 
     } catch (JSONException e) { 
      Log.d("ERROR", e.getMessage()); 
      System.exit(1); 
     } 
     return null; 
    } 

Начать Отправить тему

 ma.ShowToastMsg("Updating Contract To mySQL" + customer._name); 
    mh.sendJSONTHREAD("http://.php", 
      GetJSONObject(customer)); 
public void sendJSONTHREAD(final String URL, final JSONObject json) { 
    new Thread(new Runnable() { 
     public void run() { 
      sendJson(URL, json); 
     } 
    }).start(); 
} 

Отправить это

public void sendJson(final String URL, final JSONObject json) { 
    Looper.prepare(); // For Preparing Message Pool for the child Thread 
    HttpClient client = new DefaultHttpClient(); 
    HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); // Timeout 
                      // Limit 
    HttpResponse response; 

    try { 
     HttpPost post = new HttpPost(URL); 

     StringEntity se = new StringEntity(json.toString()); 
     se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, 
       "application/json")); 
     post.setEntity(se); 
     response = client.execute(post); 


     /* Checking response */ 
     if (response != null) { 
      Log.d("RESPONSE", EntityUtils.toString(response.getEntity())); 

      //InputStream in = response.getEntity().getContent(); // Get the 
                   // data in 
                   // the 
                   // entity 
      //Log.d("HTTPPOST", in.toString()); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
     // createDialog("Error", "Cannot Estabilish Connection"); 
    } 

    Looper.loop(); // Loop in the message queue 

} 

И РНР сторону вещей

include("settings.php"); 

mysql_connect($loginURL,$username,$password); 
@mysql_select_db($database) or die("-9"); 

echo var_dump($_POST); 

$varname = mysql_real_escape_string(strip_tags($_POST['name'])); 
$varemail = mysql_real_escape_string(strip_tags($_POST['email'])); 
$varphone = mysql_real_escape_string(strip_tags($_POST['phone'])); 
$varUUID = mysql_real_escape_string(strip_tags($_POST['UUID'])); 
$vargeopointUUID = $_POST['geopointUUID']; 

echo var_dump($_POST); 

эхо var_dump ($ _ POST) - возвращает меня обр ау (0) {}

ответ

4

POST-не ожидает, что JSON будет принят, а имя пар/значение, как:

List<NameValuePair> params = new ArrayList<NameValuePair>(); 
params.add(new BasicNameValuePair("key1", "value1")); 
params.add(new BasicNameValuePair("key2", "value2")); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

Если вы хотите, чтобы передать JSON в PHP, вам нужно для проверки и анализа $HTTP_RAW_POST_DATA.

Один подход (цит обнаруживаемых с помощью OP) для анализа исходных данных в прошлом выглядит следующим образом (PHP):

$obj = json_decode($HTTP_RAW_POST_DATA); $varname =$obj->{'name'}; 
+0

Не получить его - Есть много учебников и вопросов здесь с людьми, успешно используя _POST – morty346

+0

Я проверил HTTP_RAW_POST_DATA, и все мои данные находятся внутри него - однако я не могу получить переменные, заполненные - если я делаю json_decode ($ HTTP_RAW_POST_DATA ['name']); они возвращаются назад как '{' – morty346

+0

Если я не делаю json_decode, они также возвращают '{' – morty346

Смежные вопросы