duanhao7786 2015-10-04 07:55
浏览 49

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

My PHP code:

<?php
$data = 'basic';

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

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

echo $data;
?>

My Android code:

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 + "
");
   }
   is.close();

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

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

The GET method is working. But the POST method is not working when I invoke it from Android. It is invoking the PHP page but the values are not being passed.

But when I invoke POST method from a REST client via Chrome (chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo/RestClient.html) it works and the values are passing in properly. But why not from Android?

I even tried using the following code, but it doesn't work:

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条回答 默认 最新

  • dongwanqiang_2017 2015-10-04 08:21
    关注
    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 + "
    ");
            }
            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;
    
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度