2015-04-26 125 views
0

我想每60秒使用HttpURLConnection API將JSON字符串發送到服務器。我正在智能手機設備上運行應用程序,該設備通過USB電纜連接到筆記本電腦。通過這個URL http://zzzzz.byethost8.com/connection.php我得到代碼500作爲getResponseCode()的輸出。我甚至用wamp服務器嘗試過,但我沒有得到任何輸出。Android:將httpURLConnection連接到服務器

對於WAMP我用這個網址:http://192.168.134.45/connection.php其中192.168.134.45是我的Wi-Fi IP地址。

JSON字符串:

{ 
    "latitude":80.86898504, 
    "longitude":20.66561187, 
    "time":"26.04.2015 12:45:11", 
    "route":4 
} 

doInBackground()方法的實現:

protected Void doInBackground(String... params) { 
    // TODO Auto-generated method stub 

    try { 
     System.out.println("The output of : doInBackground " +params[0]); 

     //URL myUrl = new URL("http://byethost8.com/connection.php"); 
     URL myUrl = new URL("http://192.168.182.15/connection.php"); 
     HttpURLConnection conn = (HttpURLConnection) myUrl.openConnection(); 
     conn.setRequestMethod("POST"); 
     conn.setDoOutput(true); 
     conn.setConnectTimeout(10000); 
     conn.setReadTimeout(10000); 
     conn.setRequestProperty("Content-Type", "application/json"); 
     System.out.println("The output of getResponsecode: "+conn.getResponseCode()); 
     conn.connect(); 
     // create data output stream 
     DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); 
     // write to the output stream from the string 
     wr.writeBytes(params[0]); 
     wr.close(); 

    } catch (IOException e) { 

     e.printStackTrace(); 
    } 
    return null; 

} 

PHP使用默認設置WAMP連接文件。

<?php 
$json = json_decode(file_get_contents('php://input', true)); 

//hotname-username-password-datebase. 
$db = new mysqli("sql209.byethost8.com", "b8_16138121", "fadi88", "b8_16138121_busTracker"); 
echo "You are in!"; 
if ($db->connect_errno) { 
    die("We are sorry, you could not be connected to the server, 
     please check your connection setting!"); 
} 
?> 

回答

1

我正在開發其使用JSON用於發送和接收數據和我目前使用ion庫實現網絡操作,而不是創建一個任務異步等與服務器接口的應用.. 這裏示例代碼:

的Android實現(你不需要創建一個異步任務):

JsonObject jsonObject = new JsonObject(); 
jsonObject.addProperty("metodo", "inserisciLuogo"); 
jsonObject.addProperty("latitudine", latitudine); 
jsonObject.addProperty("longitudine", longitudine); 
jsonObject.addProperty("nome", nome); 
jsonObject.addProperty("indirizzo", indirizzo); 
jsonObject.addProperty("Utente_idUtente", Utils.getUserID(getApplicationContext())); 

Log.e(TAG, jsonObject.toString()); 

Ion.with(getApplicationContext()) 
     .load(URL) 
     .setJsonObjectBody(jsonObject) 
     .asJsonObject() 
     .setCallback(new FutureCallback<JsonObject>() { 
      @Override 
      public void onCompleted(Exception e, JsonObject result) { 
       if (result != null) { 
        Boolean risultato = result.get("risultato").getAsString().equals("1"); 
        Log.e(TAG, risultato.toString()); 
        if(risultato) 
         Toast.makeText(getApplicationContext(), getString(R.string.place_added), Toast.LENGTH_LONG).show(); 
        else 
         Toast.makeText(getApplicationContext(), getString(R.string.place_add_error), Toast.LENGTH_LONG).show(); 
       } 
       else 
        Toast.makeText(getApplication(), getString(R.string.error_no_server), Toast.LENGTH_LONG).show(); 
       } 
      }); 

和PHP實現:

$json = json_decode(file_get_contents('php://input'), true); 
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass); 
if($json['metodo'] == "inserisciLuogo"){ 

    $latitudine = $json['latitudine']; 
    $longitudine = $json['longitudine']; 
    $nome = $json['nome']; 
    $indirizzo = $json['indirizzo']; 
    $Utente_idUtente = $json['Utente_idUtente']; 

    $sql = "INSERT INTO luogo (latitudine, longitudine, nome, indirizzo, Utente_idUtente) 
     VALUES (:latitudine, :longitudine, :nome, :indirizzo, :Utente_idUtente)"; 
    $query = $conn->prepare($sql); 
    $query->bindParam(':latitudine', $latitudine, PDO::PARAM_STR); 
    $query->bindParam(':longitudine', $longitudine, PDO::PARAM_STR); 
    $query->bindParam(':nome', $nome, PDO::PARAM_STR); 
    $query->bindParam(':indirizzo', $indirizzo, PDO::PARAM_STR); 
    $query->bindParam(':Utente_idUtente', $Utente_idUtente, PDO::PARAM_STR); 

    $result = $query->execute(); 

    if($result) 
     echo json_encode(array('risultato' => "1")); 
    else 
     echo $query->errorCode(); 
} 
+0

感謝您的回答,以及if($ json ['metodo'] ==「inserisciLuogo」)中的metodo和inserisciLuogo是什麼? –

+0

請你可以告訴我你使用的JSON字符串嗎? –

+0

我對多個請求使用相同的php頁面,所以我在json的開頭添加了一個標誌來標識我想要運行的方法。 這是json樣本: {「metodo」:「inserisciLuogo」,「緯度」:「21」,「縱向」:「32」,「nome」:「prova」,「indirizzo」:「indirizzo di prova」 「Utente_idUtente」: 「1」} – Filippo