2016-02-22 3 views
1

Я пытаюсь отправить объект json в android на локальный php-сервер (XAMPP). Вот мой php-скрипт, который получает этот объект.Отправить json объект на локальный php-сервер, используя HttpURLConnection

<?php 

    $response = array(); 

    if (isset(($_POST['PNR_NO'])&&($_POST['Status'])&&($_POST['update_time']))){ 

     $PNR_NO = $_POST['PNR_NO']; 
     $Status = $_POST['Status']; 
     $update_time = $_POST['update_time']; 

     // include db connect class 
     require_once __DIR__ . '/db_connect.php'; 

     // connecting to db 
     $db = new DB_CONNECT(); 

     // mysql inserting a new row 
     $result = mysql_query("INSERT INTO pnr_database(PNR_NO, Status,update_time) VALUES('$PNR_NO', '$Status', '$update_time')"); 

     // check if row inserted or not 
     if ($result) { 
      // successfully inserted into database 
      $response["success"] = 1; 
      $response["message"] = "Product successfully created."; 

      // echoing JSON response 
      echo json_encode($response); 
     } 
     else { 
      // failed to insert row 
      $response["success"] = 0; 
      $response["message"] = "Oops! An error occurred."; 

      // echoing JSON response 
      echo json_encode($response); 
     } 
    } 
    else { 
     $response["success"] = 0; 
     $response["message"] = "Required field(s) is missing"; 

     echo json_encode($response); 
    }?> 

И Java код, который я использую это:

@Override 
    protected Void doInBackground(String... urls) { 
     OutputStream os; 
     HttpURLConnection conn = null; 
     try { 
      //constants 
      String pnr = "1234"; 
      String stat = "WC12"; 
      String updTime = "13:20"; 
      Log.i("aaaaa", "Started"); 
      URL url = new URL(urls[0]); 
      JSONObject jsonObject = new JSONObject(); 
      jsonObject.put("PNR_NO",pnr); 
      jsonObject.put("Status", stat); 
      jsonObject.put("update_time", updTime); 
      String message = jsonObject.toString(); 
      System.out.println(message); 
      conn = (HttpURLConnection) url.openConnection(); 
      conn.setReadTimeout(10000 /*milliseconds*/); 
      conn.setConnectTimeout(15000 /* milliseconds */); 
      conn.setRequestMethod("POST"); 
      conn.setDoInput(true); 
      conn.setDoOutput(true); 
      conn.setFixedLengthStreamingMode(message.getBytes().length); 


      conn.setRequestProperty("Content-Type", "application/json;charset=utf-8"); 
      conn.setRequestProperty("X-Requested-With", "XMLHttpRequest"); 

      //open 
      conn.connect(); 

      //setup send 
      os = new BufferedOutputStream(conn.getOutputStream()); 
      os.write(message.getBytes()); 
      Log.i("aaaaa","ended"); 
      //clean up 
      os.flush(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     catch (JSONException ex) { 
      ex.printStackTrace(); 
     } 
     finally { 

      //clean up 

     /*try { 
      os.close(); 
      is.close(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     */ 
      conn.disconnect(); 
     } 
     return null; 
    } 

В основном я хочу, чтобы отправить данные на мой PHP-сервер, где я создал базу данных, которая содержит таблицу с именем pnr_database и отправленных данных должен быть сохранен в этой таблице. Мне не нужен ответ с сервера.

Но мой код не работает ...

Я проверил мой PHP скрипт из HTML-форм, где я отправлял данные на сервер ... В этом случае PHP скрипт работает нормально, и данные хранятся в получении базы данных Но я не могу заставить его работать в android.

+0

Пожалуйста, определите ваш ** Код не работает **. Невозможно угадать проблему только с помощью кода. –

+0

Замените скрипт php на var_dump ($ _ POST); только заявление. Прочтите ответ и сообщите, что сбрасывается. – greenapps

+0

Ошибка со стороны сервера, и мои входные значения также не добавляются в таблицу ... Я также не могу определить свою ошибку. –

ответ

0

Это может быть немного поздний ответ. Но JSON вы получаете в PHP кодируется таким образом, что вам нужно декодировать его как таковой в вашем, если п:

$decoded = json_decode($_POST, true); //this will return an array 
$PNR_NO = $decoded['PNR_NO']; 
$Status = $decoded['Status']; 
$update_time = $decoded['update_time']; 

Здесь вы можете ввести столбцы в таблицу.

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