PHP无法从Android接收字符串

The following code attempts to POST a String from Android to PHP.

  • INTERNET permission is given.
  • Shark has been checked.
  • the device connects to MAMP (WAMP for MAC) server and sends the String.

Code on Android:

HttpClient httpclient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://MAMP-SERVER/post.php");

try {
    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("username", "Andro"));
    post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

    // Execute HTTP Post Request
    httpclient.execute(post);
    Log.i("POSTED", "YOUR USERNAME");

} catch (ClientProtocolException e) {
    Log.e("Client Protocol Exception", "Err "+ e.getMessage());
} catch (IOException e) {
    Log.e("IO Exception","Err "+ e.getMessage());
}

Code on PHP:

$test=$_REQUEST["username"];  print $_REQUEST["username"]; 

Have you tried:

$test=$_POST["username"];  print $_POST["username"]; 

?

Are you sure you're actually posting the data?

You could try sending the POST request more like below methods. Then you should be able to simply get your value in the PHP with $_POST

public void execute(final RequestMethod method)
        throws IllegalArgumentException, UnsupportedEncodingException {
    switch (method) {
    case GET:
        // add parameters
        String combinedParams = "";
        if (!params.isEmpty()) {
            combinedParams += "?";
            for (NameValuePair p : params) {
                String paramString = p.getName() + "="
                        + URLEncoder.encode(p.getValue(), "UTF-8");

                if (combinedParams.length() > 1) {
                    combinedParams += "&" + paramString;
                } else {
                    combinedParams += paramString;
                }
            }
        }
        HttpGet getRequest = new HttpGet(remoteUrl + combinedParams);
        // add headers
        for (NameValuePair h : headers) {
            getRequest.addHeader(h.getName(), h.getValue());
        }
        executeRequest(getRequest, remoteUrl);
        break;
    case POST:
        HttpPost postRequest = new HttpPost(remoteUrl);
        // add headers
        for (NameValuePair h : headers) {
            postRequest.addHeader(h.getName(), h.getValue());
        }
        if (!params.isEmpty()) {
            postRequest.setEntity(new UrlEncodedFormEntity(
                    (List<? extends NameValuePair>) params, HTTP.UTF_8));
        }
        executeRequest(postRequest, remoteUrl);
        break;
    default:
        break;
    }
}

And

private void executeRequest(final HttpUriRequest request, final String url) {
    HttpClient client = new DefaultHttpClient();

    HttpResponse httpResponse;

    try {
        httpResponse = client.execute(request);
        responseCode = httpResponse.getStatusLine().getStatusCode();
        errorMessage = httpResponse.getStatusLine().getReasonPhrase();

        HttpEntity entity = httpResponse.getEntity();

        if (entity != null) {

            responseStream = entity.getContent();

            if (!needStreamInsteadOfString) {
                response = convertStreamToString(responseStream);

                // Closing the input stream will trigger connection release
                responseStream.close();
            }
        }

    } catch (ClientProtocolException e) {
        client.getConnectionManager().shutdown();
        e.printStackTrace();
    } catch (IOException e) {
        client.getConnectionManager().shutdown();
        e.printStackTrace();
    }
}