【问题标题】:Android HTTP Request for CakePHP URLCakePHP URL 的 Android HTTP 请求
【发布时间】:2012-11-07 10:29:55
【问题描述】:

我有一个用 cakephp 创建的网站。我想将我的应用程序中形成的一些值传递给这个网站。当我在浏览器中输入完全相同的 URL 时,它可以工作。

网址类似于:www.something.com/function/add/value

所以我很困惑这是 GET 还是 POST 方法?我该怎么做?

问题是我不能更改这个 URL 或放一​​些 POST 或 GET PHP 脚本来获取值。所以我基本上只需要使用这些参数调用 URL。

这是我的代码:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = null;
try {
        httppost = new HttpPost("www.something.com/function/add/" + URLEncoder.encode(txtMessage.getText().toString(), "UTF-8"));
} catch (UnsupportedEncodingException e1) {
        e1.printStackTrace();
}

try {
        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        httpclient.execute(httppost, responseHandler);
} catch (ClientProtocolException e) {
} catch (IOException e) {
}

【问题讨论】:

    标签: android httpwebrequest http-post urlencode http-get


    【解决方案1】:

    创建List&lt;NameValuePair&gt; 并在此处输入您的值(例如“somevalue”)。用你的值创建DefaultHttpClient() 设置nameValuePairs

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("tag", "TEST_TAG"));
    nameValuePairs.add(new BasicNameValuePair("valueKey", "somevalue"));
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("www.something.com/function/add/utils.php");
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();
    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
    StringBuilder sb = new StringBuilder();
    String line = "";
    while ((line = reader.readLine()) != null) {
        sb.append(line + "n");
    }
    is.close();
    Log.i("response", sb.toString());
    

    /function/add/utils.php的服务器端获取你的价值

    if (isset($_POST['tag']) && $_POST['tag'] != '') {
         $tag = $_POST['tag']; //=TEST_TAG
         $value = $_POST['valueKey']; //=somevalue
    }
    //and return some info 
    $response = array("tag" => $tag, "success" => 0, "error" => 0);
    $response["success"] = 1;
    echo json_encode($response);
    

    这个$response 在你的java 代码中接收为HttpEntity entity = response.getEntity()。它可能会帮助你。

    【讨论】:

    • 很抱歉,我认为 8 不够清楚。我的网址不包含 PHP 文件或任何内容。只是一个普通的 URL(CakePHP 创建它们的方式......)服务器直接从 URL 读取值。还有其他方法吗?
    • 您有一个类似www.something.com/function/add/ 的链接,其中包含一些值。尝试在服务器上查找处理程序文件。在这个目录中function/add/ 必须是index.php。有吗?
    • 不,没有 PHP 文件,也不可能有一个。链接 www.something.com/function/add/myvaluetobeadded 就是这样。然后,CakePHP 知道“myvaluetobeadded”是我给网站的实际价值,如果我用浏览器导航到该网站,效果很好。
    • 好的,我明白了。 DefaultHttpClient() 的方式不对。我不认为这可以解决你的问题,但看看如何点击链接。就像WebView webView = (WebView) findViewById(R.id.webView); Uri data = Uri.parse("http://www.site.com")); webView.loadUrl(data.toString()); - 但这是通过打开浏览器...
    • 这是否也可以在后台某处而不打开浏览器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    相关资源
    最近更新 更多