2016-09-15 11 views
1

私のアンドロイドアプリからjsonの文字列を自分のPHPサーバに送信しようとしています。以下は私のmobiledb_control.phpとhttpconnect.javaの完全なコードです。PHPサーバでPOST文字列をアンドロイドで表示するには?

Log.v( "HTTPSENDER"、 "WORKED");実行され、エラーは発生しません。 しかし、私のerror_log( "in");実行されません。

androidで送信されたJSONをerror_log()に表示するにはどうすればよいですか?

HttpConnect.java:

public class HttpConnect { 
    public HttpConnect(){ 

    } 
    public void sendData(String jsonObject){ 
     try{ 
      URL url = new URL("http://www.alextanti.net/PHPDashboard/Backend/mobiledb_control.php"); 
      HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
      conn.setRequestMethod("POST"); 
      conn.setDoOutput(true); 
      conn.setDoInput(true); 
      conn.setUseCaches(false); 

      BufferedWriter output = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream(),"UTF-8")); 
      output.write("json="+jsonObject); 
      output.flush(); 
      output.close(); 
      Log.v("HTTPSENDER","WORKED"); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 

mobiledb_control.php:

<?php 
ini_set('display_errors', 1); 
ini_set('log_errors', 1); 
ini_set("error_log", "../Logs/error.log"); 
error_reporting(E_ALL); 
if(!empty($_POST['json'])){ 
    echo(var_dump($_POST['json'])); 
    error_log($_POST['json']); 
} 
$headers = apache_request_headers(); 

?> 
+0

私の記憶が正しければ、あなたがする必要がUTF8を使用してあなたの文字列をエンコードするAndroid App – 0xDEADC0DE

+0

'jsonObject' ??それは何ですか?私たちはそのタイプを見ることさえできません。そこにはStringだけを書くことができます。文字列はURLエンコードされるべきです。 – greenapps

+0

'if($ _ POST)' ???そのような声明のために何がありますか? – greenapps

答えて

0

はそれを修正しているように見えたが、私はどのように

PHPファイルは考えていません:

<?php 
ini_set('display_errors', 1); 
ini_set('log_errors', 1); 
ini_set("error_log", "../Logs/location.log"); 
error_reporting(E_ALL); 
if(!empty($_POST['json'])){ 
    echo(var_dump($_POST['json'])); 
    error_log($_POST['json']); 
} 
?> 

JAVAファイル:

public class HttpConnect { 
    public HttpConnect(){ 

    } 
    public void sendData(String jsonObject){ 
     try{ 
      URL url = new URL("http://www.alextanti.net/PHPDashboard/Backend/mobiledb_control.php"); 
      HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
      conn.setRequestMethod("POST"); 
      conn.setDoOutput(true); 
      conn.setDoInput(true); 
      conn.setUseCaches(false); 
      BufferedWriter output = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream(),"UTF-8")); 
      output.write("json="+jsonObject); 
      output.flush(); 
      output.close(); 
      Log.v("HTTPSENDER","WORKED"); 
      Log.v("HTTPSENDER",""+conn.getResponseCode()); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 
0

PHPコード

でこれを試してみて、この

のようなエラー報告をオンにしますあなたがポストからなっているものがより明確にするため

print_r($_POST); 

+0

Java側からパラメータに何か問題がありますか? – atanti

+0

あなたはあなたのログをチェックすることができます同じ。エラーが発生した場合はlogcatに表示されます –

+0

"Array()"のみを表示します – atanti

0
  1. jsonの作成と解析にphpのエンコードとデコード機能を使用します。

    $request=json_decode($_POST['json']); // it gives the Array 
        foreach($request as $values){ 
        echo($values['your_value1']) 
        echo($values['your_value2']) 
        } 
    

このURLを参照してください。サーバ・クライアントの通信を設計する際にhttp://php.net/manual/en/function.json-decode.php

+0

更新されたコードでは、json文字列全体が表示されるはずのvar_dumpを使用しました。 – atanti

0

を、クライアントとサーバーの両方が相互に通信できることを確認することが不可欠です。このことを念頭に置いて、あなたはtryブロック内のコード内でこれを追加することで、サーバの応答コードを提供してくださいすることができます

try { 
... 
Log.d(TAG, "code: " + conn.getReturnCode()); 
InputStream is = conn.getInputStream(); 
String serverReply = readIt(is, 500); 
Log.d(TAG, serverReply); 
... 
} 

public String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException { 
    Reader reader = null; 
    reader = new InputStreamReader(stream, "UTF-8"); 
    char[] buffer = new char[len]; 
    reader.read(buffer); 
    return new String(buffer); 
} 

それはそれぞれ200と401を返します。応答から識別できるコードがない場合(つまり、応答がHTTPでない場合)は-1を返します。

乾杯!

+0

それは確かに冷たい20 – atanti

+0

を返しました。あなたのPHPコードで、POSTデータをエコーバックすることがわかります。あなたのJavaコードに戻り、サーバーからこの返信を読み返してみましょう。私の編集を見てください。 – user1506104

+0

今はうまくいくように思えましたが、私は何をしたのか分かりませんでしたが、ここに投稿した作業コードを見ることができます。たぶん、私は手がかりがないので、私が変更したものを見つけることができます – atanti

関連する問題