0

出于某种原因,我无法让我的异步任务传递我设置的帖子参数。任何帮助表示赞赏。

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

已编辑:将客户端和发布声明移至 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 页面,其中只有 html 和 body 标记,正如 php 代码所期望的那样。

4

1 回答 1

0

我面临的问题与我的网址有关。我的网址就像

http://ip_address/testbed

我点击的页面是 testbed 目录中的 index.php 。由于我没有放置尾随“/”,因此 apache 在自动重定向期间没有将参数发送到页面。添加“/”解决了这个问题。感谢 Sam_D 的帮助。

于 2013-10-25T20:51:46.673 回答