从Android到PHP页面的HttpPost请求(参数没有传递)


HttpPost request from Android to PHP page (parameters are not passing)

我的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方法正在工作。但是POST方法不工作时,我从Android调用它。它正在调用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());
}
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;
}