2016-11-30 12 views
0

ボタンを使用してApacheサーバーにアクセスしようとしています。Android開発用のHTTP POSTリクエスト - デバッグのヘルプ

私はサーバーにメッセージを送信し、メッセージを受信して​​います。私はそのメッセージをテキストフィールドに表示しています。

私のコードは動作していませんし、デバッグの方法がわかりません。私は自分のコードとPHPスクリプトを添付しています。私はこれで初心者ですので、どんな助けも高く評価されます。あなたが入力ストリームから読み込む

<?php 

//Read request parameters 
$message= $_POST[“message”]; 

// Store values in an array 
$returnValue = array(“message”=>$message); 

// Send back request in JSON format 
echo json_encode($returnValue); 

?> 
+0

申し訳ありませんが、PHPスクリプトが貼り付けられていないようです。ここにあります: <?php //リクエストパラメータを読み込みます。 $ message = $ _POST ["message"]; //値を配列に格納する $ returnValue = array( "message" => $ message); // JSON形式でリクエストを返信します echo json_encode($ returnValue); ?> – user6951109

+0

あなたはメソッド 'sendMessage'を呼び出しません。ネットワーク操作で同じスレッド内のTextViewにテキストを設定することはできません。 –

+0

あなたは実際にあなたのPHPコードでこれらの "スマート引用符"(角付き引用符)を使用していますか?あなたはまっすぐ引用符を使用する必要があります。 – Chris

答えて

0

前に、実際にHTTP呼び出しを行う必要があります。ここでは

public class MainActivity extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    } 

    public void sendMessage(View view) { 

     HttpURLConnection request = null; 

     try { 
      String myURL = "http://creative.colorado.edu/"; 
      URL url = new URL(myURL); 

      request = (HttpURLConnection) url.openConnection(); 

      //To post output request 
      request.setDoOutput(true); 
      request.setRequestMethod("POST"); 
      request.setRequestProperty("message", "text/plain"); 

      String input = "I am ok"; 

      OutputStream outputPost = new BufferedOutputStream(request.getOutputStream()); 
      outputPost.write(input.getBytes()); 
      outputPost.flush(); 
      outputPost.close(); 

      BufferedReader in = new BufferedReader(new InputStreamReader(request.getInputStream())); 
      String inputLine; 
      while((inputLine = in.readLine()) != null){ 
       System.out.println(inputLine); 
      } 

      in.close(); 

      System.out.println(inputLine); 

      TextView displayMessage = (TextView) findViewById(R.id.textView2); 
      displayMessage.setText(in.toString()); 
     } 

     catch (Exception ex) { 
     } 

     finally { 
      if (request != null) { 
       request.disconnect(); 
      } 
     } 

    } 
} 

は、私は(私はそれが正しいか確かではないよ)を使用していますPHPスクリプトです。

...

outputPost.close(); =新しいBufferedReaderの内

request.connect()

BufferedReaderの(新しいInputStreamReaderの(request.getInputStream()))。 ...

また、任意のネットワークコールは、バックグラウンド非同期スレッドで行う必要があります。 Volley(https://developer.android.com/training/volley/simple.html)ライブラリは、この作業を劇的に簡単にします。