从Android到PHP页面的HttpPost请求(参数未通过)

时间:2015-10-04 07:55:51

标签: php android parameters http-post

我的PHP代码:

<?php
$data = 'basic';

if( $_POST["tag"]){
   $data = $data.$_POST['tag'];
}

if( $_GET["tag"]){
   $data = $data.$_GET['tag'];
}

echo $data;
?>

我的Android代码:

String url = http: //<IP>/sreeweb/sample.php;
List params = new ArrayList();
params.add(new BasicNameValuePair("tag", "services"));

InputStream is = null;

try {

   DefaultHttpClient httpClient = new DefaultHttpClient();
   HttpPost httpPost = new HttpPost(url);
   httpPost.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded");
   httpPost.setHeader("Accept", "*/*");
   httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
   HttpResponse httpResponse = httpClient.execute(httpPost);
   Log.d("msg", "res : " + httpResponse.getStatusLine().getStatusCode()); //200

   HttpEntity httpEntity = httpResponse.getEntity();

   is = httpEntity.getContent();
   Log.d("msg", "" + is);
} catch (UnsupportedEncodingException e) {
   e.printStackTrace();
} catch (ClientProtocolException e) {
   e.printStackTrace();
} catch (IOException e) {
   e.printStackTrace();
}

BufferedReader reader;
StringBuilder stringBuilder = null;

try {
   reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);

   stringBuilder = new StringBuilder();
   String line = null;

   while ((line = reader.readLine()) != null) {
      stringBuilder.append(line + "\n");
   }
   is.close();

} catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
}

String result = stringBuilder.toString();
Log.e(TAG, result);

GET方法正在运行。但是当我从Android调用它时,POST方法不起作用。它正在调用PHP页面,但是没有传递值。

但是当我通过Chrome(chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo/RestClient.html)从REST客户端调用POST方法时,它可以正常传递值。但为什么不从Android?

我甚至尝试使用以下代码,但它不起作用:

try {

   String data = URLEncoder.encode("tag", "UTF-8") + "=" + URLEncoder.encode("services", "UTF-8");
   URL url = new URL(finalUrl);
   HttpURLConnection conn = null;
   conn = (HttpURLConnection) url.openConnection();
           conn.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
   conn.setRequestProperty("Accept", "*/*");
   // Allow Inputs
   conn.setDoInput(true);
   conn.setDoOutput(true);
   // Use a post method.
   conn.setRequestMethod("POST");

   OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
   wr.write(data);
   wr.flush();

   BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

   StringBuilder sb = new StringBuilder();
   String line = null;

   // Read Server Response
   while ((line = reader.readLine()) != null) {
      sb.append(line);
      break;
   }

   Log.e(TAG, "postMethod  " + sb.toString());
   return sb.toString();


} catch (Exception e) {
    return new String("Exception: " + e.getMessage());
}

1 个答案:

答案 0 :(得分:0)

public JSONObject makeHttpRequest(String url, String method,
        List<NameValuePair> params) {

    // Make HTTP request
    try {

        // checking request method
        if (method == "POST") {

            // now defaultHttpClient object
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            httpPost.setEntity(new UrlEncodedFormEntity(params));

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        } else if (method == "GET") {
            // request method is GET
            DefaultHttpClient httpClient = new DefaultHttpClient();
            String paramString = URLEncodedUtils.format(params, "utf-8");
            url += "?" + paramString;
            HttpGet httpGet = new HttpGet(url);

            HttpResponse httpResponse = httpClient.execute(httpGet);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();
        }

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    //HERE is WILL READ AND CONVERTED INTO STRING THEN PASS IT TO MAIN ACTIVITY
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder str = new StringBuilder();
        String strLine = null;
        while ((strLine = reader.readLine()) != null) {
            str.append(strLine + "\n");
        }
        is.close();
        json = str.toString();
    } catch (Exception e) {

    }

    // now will try to parse the string into JSON object
    try {
        jsonObj = new JSONObject(json);
    } catch (JSONException e) {

    }

    return jsonObj;

}