【问题标题】:HttpPost request from Android to PHP page (parameters are not passing)从 Android 到 PHP 页面的 HttpPost 请求(参数未传递)
【发布时间】:2015-10-04 07:55:51
【问题描述】:

我的 PHP 代码:

<?php
$data = 'basic';

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

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

echo $data;
?>

我的安卓代码:

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());
}

【问题讨论】:

    标签: php android parameters http-post


    【解决方案1】:
    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;
    
    }
    

    【讨论】:

    • 我在问题中提到的相同代码。它不工作
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 2017-04-15
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多