2016-04-05 10 views
-1

アンドロイドからローカルサーバーにデータを送信しようとしています。データの送信に成功したLogcatで応答を取得しましたが、Webページに表示できません。アンドロイドからサーバーにデータを送信する(ローカルホスト)

Androidのコードは次のとおりです。

package rk.android.test.test; 

import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import cz.msebera.android.httpclient.HttpEntity; 
import cz.msebera.android.httpclient.HttpResponse; 
import cz.msebera.android.httpclient.NameValuePair; 
import cz.msebera.android.httpclient.client.HttpClient; 
import cz.msebera.android.httpclient.client.entity.UrlEncodedFormEntity; 
import cz.msebera.android.httpclient.client.methods.HttpPost; 
import cz.msebera.android.httpclient.impl.client.DefaultHttpClient; 
import cz.msebera.android.httpclient.message.BasicNameValuePair; 
import cz.msebera.android.httpclient.util.EntityUtils; 


public class MainActivity extends AppCompatActivity { 
Button button; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     button = (Button)findViewById(R.id.send); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        new DataAsyncTask().execute(); 
      } 
     }); 
    } 

    public class DataAsyncTask extends AsyncTask<String, String, String> 
    { 
     protected void onPreExecute() 
     { 
      super.onPreExecute(); 
     } 

     @Override 
     protected String doInBackground(String... params) 
     { 
      try { 
       String postUrl = "http://192.168.137.1/receiver/receiver.php"; 
       HttpClient httpClient = new DefaultHttpClient(); 

// post header 
       HttpPost httpPost = new HttpPost(postUrl); 

// add your data 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
       nameValuePairs.add(new BasicNameValuePair("action", "Mohan")); 
       httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

// execute HTTP post request 
       HttpResponse response = httpClient.execute(httpPost); 
       HttpEntity resEntity = response.getEntity(); 

       if (resEntity != null) { 

        String responseStr = EntityUtils.toString(resEntity).trim(); 
        Log.v("OP", "Response: " + responseStr); 

        // you can add an if statement here and do oth 

       } 
      }catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

    } 
} 

PHPのコードは次のとおりです。

<?php 
$reversed = strrev($_POST["action"]); 

echo $reversed; 
?> 

Logcat応答は次のとおりです。

04-06 02:36:55.789 17879-17959/rk.android.test.test V/OP: Response: nahoM 

問題は、私はロードに空白のページを取得することですreceiver.phpファイル!

答えて

0

これは、それにナビゲートするときに、もちろんそれだけで空白のページを印刷しようとしているファイルの内容のみ

echo strrev($_POST["action"]); 

ある場合 - $_POST['action']が設定解除されますので。

あなたは、これが代わりにREQUESTPOSTを変更、何かを表示したい場合は、このようにそれに移動します。

http://server:port/page.php?action=esreveRoTgnirtS 
0

receiver.phpスクリプトはPOSTボディに渡さ逆に「アクション」パラメータで応答します。 HttpClientベースのコードは、このパラメータ値を提供します。

このURLをWebページにロードするときは、POST本体にパラメータ値を渡す必要があります。そうしないと、$reversedは空の文字列になり、空白のページが表示されます。

WebブラウザでPOST経由でパラメータを渡すためには、あなたが<form action=".../receiver.php">、適切な<input name="action">要素を持つことになり、余分なWebページが必要になりますつまり、XMLHttpRequestの、または<form>要素を使用するのいずれかが必要です。

_POSTの代わりに_GETまたは_REQUESTを使用した場合、これらの方法の両方を処理する場合は、この必要性を避けることができます。次に、 "..../receiver.php?action = Mohan"というURLのクエリ部分を介して "action"パラメータを渡すことができます。

関連する問題