отправка данных с андроида в ScriptePHP и ответ - PullRequest
0 голосов
/ 20 февраля 2012

Позвольте мне объяснить сценарий:

Я хочу отправить некоторые конфиденциальные данные на другой сервер с помощью одного из моих собственных приложений 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';
}
?>

1 Ответ

0 голосов
/ 20 февраля 2012

Я не знаю, в чем проблема, но localhost указывает на эмулятор (или телефон Android), а не на локальную машину, которая, вероятно, является вашим сервером PHP / Apache.

Если вы используете эмулятор, давайте посмотрим на конкретные IP-адреса (раздел «Сеть эмулятора»)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...