Post Params没有使用HttpPost发送到Web服务器

时间:2013-10-24 21:28:48

标签: android android-asynctask http-post

出于某种原因,我不能让我的异步任务传递我设置的post params。任何帮助表示赞赏。

这是我调用线程的onClick。请注意,customerInfo不为null,并且每个索引都有一个值。

EDITED:将客户端和帖子声明移入doInBackground并取出额外的,不需要的线程。 EDITED2:显然在点击您的网络服务器上的子目录时,您声明了您的网址

 http://IP/subDirectory

没有尾随“/”apache不会将参数传递给index.php。

        @Override
        public void onClick(View v) {
            new RegisterPost(progress).execute();
        }

这是我的doInBackground

    @Override
    protected Void doInBackground(Void... voids) {
        String[] customerInfo = getRegistrationInfo();
        // Post
        // Send info to tmiszone
        String url = "http://SERVER_ADDRESS/"; // I had to add index.php to my url to get around the issue.
        client = new DefaultHttpClient();
        post = new HttpPost(url);
        // Set post parameters
        List<NameValuePair> pairs = new ArrayList<NameValuePair>();
        pairs.add(new BasicNameValuePair("salesCode", customerInfo[0]));
        pairs.add(new BasicNameValuePair("firstName", customerInfo[1]));
        pairs.add(new BasicNameValuePair("lastName", customerInfo[2]));
        try {
            post.setEntity(new UrlEncodedFormEntity(pairs));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        // Make connection
        try {
            response = client.execute(post);
        } catch (ClientProtocolException e){
            // TODO handle
            response = null;
        } catch (IOException e) {
            // TODO handle
            response = null;
        } catch (Exception e) {
            // TODO handle
            response = null;
        }
        return null;
    }

这是我的PHP代码。

<html>
<body>
<?php
    error_log("hit by app");
    foreach($_POST as $key=>$value){
        error_log("// ".$key." ".$value);
    }
?>
</body>
</html>

现在在我的apache日志中,我看到了“点击应用”消息,但没有别的。并且我的应用程序获得了一个空的html页面,其中只包含了PHP代码中预期的html和body标签。

1 个答案:

答案 0 :(得分:0)

我遇到的问题与我的网址有关。我的网址就像

http://ip_address/testbed

我正在点击的页面是testbed目录中的index.php。因为我没有把尾随&#34; /&#34;在自动重定向期间,apache没有将参数发送到页面。添加&#34; /&#34;解决了这个问题。谢谢Sam_D的帮助。