2015-11-17 52 views
0

我有一個Android應用程序發送一個HTTP POST到遠程服務器:HTTP POST從Android應用程序服務器無法正常工作

protected Void doInBackground(Void... params) { 
     // Get the message from the intent 
     Intent intent = getIntent(); 
     String message = intent.getStringExtra(MapsActivity.EXTRA_MESSAGE); 
     double longitude = intent.getDoubleExtra(MapsActivity.EXTRA_LONGITUDE, 0.0); 
     double latitude = intent.getDoubleExtra(MapsActivity.EXTRA_LATITUDE, 0.0); 
     Log.d("doInBackground", message); 
     Log.d("doInBackground", String.valueOf(longitude)); 
     Log.d("doInBackground", String.valueOf(latitude)); 
     URL url = null; 
     HttpURLConnection client = null; 
     try { 
      // Establish http connection 
      url = new URL("http://******.com/"); 
      client = (HttpURLConnection) url.openConnection(); 
      client.setDoOutput(true); 
      client.setDoInput(true); 
      client.setRequestMethod("POST"); 
      client.connect(); 
      OutputStreamWriter writer = new OutputStreamWriter(client.getOutputStream()); 
      String output; 
      output = URLEncoder.encode("message", "UTF-8") 
        + "=" + URLEncoder.encode(message, "UTF-8"); 

      output += "&" + URLEncoder.encode("longitude", "UTF-8") + "=" 
        + URLEncoder.encode(String.valueOf(longitude), "UTF-8"); 

      output += "&" + URLEncoder.encode("latitude", "UTF-8") + "=" 
        + URLEncoder.encode(String.valueOf(latitude), "UTF-8"); 
      Log.d("doInBackground(output)", output); 
      Log.d("doInBackground(code)", String.valueOf(client.getResponseCode())); // Return 200 
      writer.write(output); 
      writer.flush(); 
      writer.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      client.disconnect(); 
     } 
     return null; 
    } 

在服務器上,我有:

<?php 
     $m = urldecode($_POST['message']); 
     $long = urldecode($_POST['longitude']); 
     $lat = urldecode($_POST['latitude']); 
     print " ==== POST DATA ===== 
     Message : $m 
     Longitude : $long 
     Latitude : $lat"; 
?> 

客戶端.getResponseCode()返回200,我認爲這意味着我的連接成功了?但該網站仍然沒有顯示。什麼可能導致問題? 我

E/GMPM: getGoogleAppId failed with status: 10 
E/GMPM: Uploading is not possible. App measurement disabled 

可能這個問題?

+0

你有什麼特別的理由不使用像Retrofit這樣的庫嗎? –

+0

不,我不知道這個圖書館。 (我認爲我正在做的是最簡單的方法之一,我只是測試我是否可以從Android應用程序發送一些數據到遠程服務器,我使用JSON傳遞數據,但它沒有工作。我試圖找到另一種方式走動。(這是我的原始帖子:http://stackoverflow.com/questions/33728721/json-data-sent-from-android-does-not-show-on-the-服務器)你有什麼理由推薦這個庫嗎? – ZigZagZebra

+0

這是網絡調用最常用的庫,它由Square開源,並且在互聯網上有很活躍的開發和大量的文檔,它自動編組JSON,處理標題,body和async。如果每個應用都有一個庫,那就是這個。 –

回答

0

你是什麼意思的網站沒有顯示任何內容?當您重新加載網站時無法看到打印件,因爲您沒有將它保存到任何位置,只是將這些值打印在該單一請求上。要進行調試,您可以將後params寫入文件,而不是查看它們是否正在通過,或者更好,但在android端記錄返回的對象。

相關問題