【问题标题】:Android from (HTTP) POST to GETAndroid 从 (HTTP) POST 到 GET
【发布时间】:2012-12-18 19:58:37
【问题描述】:

我正在开发 2 个相同的应用程序,它们需要将相同的字符串发送到 php 文件。当我在 PHP 中使用此代码进行检查时,iOs 是一个 GET。

file_put_contents('dump.txt', "POST: \n" . print_r($_POST, true) . "\n\n\n GET: \n" . print_r($_GET, true));

但 Android 是一个 POST,但它们需要完全相同,因为我已经构建了 PHP 的一个工作部分,我无法再更改了。

这是我的安卓代码:

HttpClient httpclient = new DefaultHttpClient();
            HttpPost httpost = new HttpPost("http://Myserver.com/default.php");

            json = new JSONObject(); 
            try { 
                json.put("id", "69403"); 
                json.put("longitude", longi); 
                json.put("latitude", lat); 
                json.put("timestamp", time); 

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

            /// create StringEntity with current json obejct 

            try { 
          //  StringEntity se = new StringEntity(json.toString()); 

                List <NameValuePair> nvps = new ArrayList <NameValuePair>();
                nvps.add(new BasicNameValuePair("data", json.toString()));
                httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));


                System.out.println("send about to do post");
                try {
                    response = httpclient.execute(httpost);
                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.println("send post done");
                HttpEntity entity = response.getEntity();


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

【问题讨论】:

标签: php android http-post http-get


【解决方案1】:

变化:

HttpPost httpost = new HttpPost("http://Myserver.com/default.php");

HttpGet httpget = new HttpGet("http://Myserver.com/default.php");

【讨论】:

  • 当我改变这个时,我得到一个错误:httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));它想将其更改为 ((HttpResponse) httpost).setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));但后来它崩溃了
  • 你能不能说的更清楚一些,因为你看到的错误信息是什么?
  • setEntity 上的错误。可能的解决方案:将演员表添加到 httppost。然后是 ((HttpResponse) httpost).setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
  • 那是因为 HttpGet 没有 setEntity 方法。而且您不能简单地将 HttpPost 替换为 HttpGet 并期望一切正常。另外据我所知,您无法使用 get 在请求正文中发送任何内容。
【解决方案2】:

如果您收到NetworkOnMainThreadException,那是因为您尝试从主线程执行网络操作。如果是这样,请尝试查看AsyncTask

还要确保您在 android 清单中获得了 Internet 权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多