2012-02-20 25 views
0

发送数据让我解释一下情景:从机器人到ScriptePHP和响应

我想用我的原生Android应用程序之一,一些机密数据发送到不同的服务器。在服务器端有一个PHP页面监听我传递的参数并获取相关数据。

这里是我的Java代码:

package com.http7; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 
import java.util.ArrayList; 
import java.util.List; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class Http7Activity extends Activity implements OnClickListener{ 
    /** Called when the activity is first created. */ 
    private EditText usernameEditText; 
    private Button send; 
    private String givenUsername; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     usernameEditText = (EditText) findViewById(R.id.go); 
     send = (Button) findViewById(R.id.b1); 
     send.setOnClickListener(this); 
    } 
    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 

     givenUsername = usernameEditText.getEditableText().toString(); 
     //System.out.println("Given username :" + givenUsername); 
     sendPostRequest(givenUsername); 
    } 
    private void sendPostRequest(String givenUsername){ 
     /*-----------------------------------------------------------------1-----------------------------------*/ 

     class SendPostReqAsyncTask extends AsyncTask<String, Void, String>{ 
      /*----------------------------------------------------2-----------------------------------*/ 
      @Override 
      protected String doInBackground(String... params) { 
       // TODO Auto-generated method stub 
       /*---------------------------------------3-----------------------------------*/ 
       String paramUsername = params[0]; 
       HttpClient httpClient = new DefaultHttpClient(); 
       HttpPost httpPost = new HttpPost("http://localhost/test/test.php"); 
       BasicNameValuePair usernameBasicNameValuePair = new BasicNameValuePair("p", paramUsername); 
       List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>(1); 
       nameValuePairList.add(usernameBasicNameValuePair); 
       try { 
        UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList); 
        httpPost.setEntity(urlEncodedFormEntity); 
        try { 
         HttpResponse httpResponse = httpClient.execute(httpPost); 
         InputStream inputStream = httpResponse.getEntity().getContent(); 
         InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
         BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
         StringBuilder stringBuilder = new StringBuilder(); 
         String bufferedStrChunk = null; 
         while((bufferedStrChunk = bufferedReader.readLine()) != null){ 
          stringBuilder.append(bufferedStrChunk); 
         } 
         return stringBuilder.toString(); 
         }catch (ClientProtocolException cpe) { 
         //System.out.println("First Exception caz of HttpResponese :" + cpe); 
         cpe.printStackTrace(); 
         }catch (IOException ioe) { 
           //System.out.println("Second Exception caz of HttpResponse :" + ioe); 
           ioe.printStackTrace(); 
         } 
        }catch (UnsupportedEncodingException uee) { 
         //System.out.println("An Exception given because of UrlEncodedFormEntity argument :" + uee); 
         uee.printStackTrace(); 
        } 
       return null; 
       /*---------------------------------------3-----------------------------------*/ 
      } 

      @Override 
      protected void onPostExecute(String result) { 
       // TODO Auto-generated method stub 
       super.onPostExecute(result); 
       if(result.equals("working")){ 
        Toast.makeText(getApplicationContext(), "HTTP POST is working...", Toast.LENGTH_LONG).show(); 
       }else{ 
        Toast.makeText(getApplicationContext(), "Invalid POST req...", Toast.LENGTH_LONG).show(); 
       } 
      } 



      /*---------------------------------------------------2------------------------------------*/ 
     } 

     SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask(); 
     sendPostReqAsyncTask.execute(givenUsername); 



     /*-------------------------------------------------------------------1----------------------------------*/ 
    } 
} 

这里是PHP代码:

<?php 
$varUsername = $_POST['p']; 
if($varUsername == "bilhip"){ 
    echo 'working'; 
}else{ 
    echo 'invalid'; 
} 
?> 
+0

您的问题是什么? – 2012-02-20 16:18:28

回答

0

我不知道是什么问题,但本地主机点模拟器(或Android手机),而不是可能是您的PHP/Apache服务器的本地机器。

如果您使用模拟器,let's have a look at the particular IPs (section "Emulator networking")

+0

请帮帮我! – bilhip 2012-02-20 18:32:51

+0

如果你没有说出什么问题,我们就帮不了你。你在找什么?教程? – Sly 2012-02-21 09:07:03