我可以使用loopj异步HTTP客户端将数据发送到PHP页面吗?


Can I use loopj async HTTP client to send data to a PHP page?

我已经成功安装了loopj异步http客户端,但在执行此代码时遇到了此问题:

 protected void PostData(Integer Question_ID,Integer ResponseChosen_ID) throws IOException {
        AsyncHttpClient client = new AsyncHttpClient();
        final RequestParams params1 = new RequestParams();
        params1.add("Question_ID",Question_ID.toString());
        client.post("http://10.0.2.2:443/SwlLogin.php", params1, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                System.out.print(params1);
            }
            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
            }
        });

错误:

AsyncHttpClient 中使用的同步响应处理程序。您应该在 looper 线程中创建响应处理程序,或者改用 SyncHttpClient。

这是因为 UI 线程,

但使用此客户端的全部意义在于它可以绕过 UI 线程异常并执行 http 请求?

没有日志猫。

有关如何解决此问题的任何建议将不胜感激。

您可以使用

以下解决方法调用PostData()

new Handler(Looper.getMainLooper()).post(new Runnable(
   {
    @Override
    public void run()
    {
        postData();
    }
})) ;

这正是 UI 线程问题。

我在几个项目中使用了loopJ AsyncHttpClient,我能知道你正在实现loopJ的整个代码/类吗?

如果你期望从你的 php 中获得字符串,你应该像这样实现你的客户端

client.post("http://10.0.2.2:443/SwlLogin.php", params1, new TextHttpResponseHandler() {
        @Override
        public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
            Log.d("RESPONSE", responseString);
        }
        @Override
        public void onSuccess(int statusCode, Header[] headers, String responseString) {
            Log.d("RESPONSE", responseString);
        }
    });

php 代码:

ob_start();
error_reporting(0);
var_dump($_REQUEST);
var_dump(headers_list());