【问题标题】:Using LoopJ AndroidAsyncHttp to retrieve values使用 LoopJ AndroidAsyncHttp 检索值
【发布时间】:2014-05-03 13:03:44
【问题描述】:

我刚刚开始使用 LoopJ AndroidAsyncHttp 库及其出色的数据上传功能。

但是,我现在正尝试使用 get 请求获得响应,但我似乎无法理解为什么我的 onSuccess 和 onFailure 方法都没有被调用。我浏览了这里的问题,似乎找不到解决 onSuccess 方法的新实现的问题。有人可以帮忙吗?

在 ButtonClick 上调用的方法:

public void displayUploaded(View view){

    RequestParams params=new RequestParams();


    try{


        AsyncHttpClient client = new AsyncHttpClient();

        client.get("http://192.168.1.4/clientservertest/returnUploadedImages.php",
                    new JsonHttpResponseHandler() {

                    @Override
                    public void onSuccess(JSONObject jsonObject) {
                    // Display a "Toast" message

                    Toast.makeText(getApplicationContext(), "Success!", Toast.LENGTH_LONG).show();


                    Log.d("android", jsonObject.toString());
                    }

                    @Override
                    public void onFailure(int statusCode, Throwable throwable, JSONObject error) {
                    // Display a "Toast" message

                    Toast.makeText(getApplicationContext(), "Error: " + statusCode + " " + throwable.getMessage(), Toast.LENGTH_LONG).show();

                    // Log error message
                    // to help solve any problems
                     Log.e("android", statusCode + " " + throwable.getMessage());
                     }
                     });




    }
    catch(Exception e){
        Toast toast2=Toast.makeText(getApplicationContext(),"Failed first TRY",Toast.LENGTH_LONG);
        toast2.show();
        e.printStackTrace();
    }


}

这是我的 php 代码(在 chrome 上使用 Postman Client 可以正常工作,我已在 EDIT2 中发布了输出):

<?php 

        #Connect to Database 
        $con = mysqli_connect("localhost","root","", "mytestdatabase"); 

        #Check connection 
        if (mysqli_connect_errno()) { 
            echo 'Database connection error: ' . mysqli_connect_error(); 
            exit(); 
        } 


        #Query the database to get the user details. 
        $userdetails = mysqli_query($con, "SELECT * FROM images"); 

        #If no data was returned, check for any SQL errors 
        if (!$userdetails) { 
            echo 'Could not run query: ' . mysqli_error($con); 
            exit; 
        } 

        #Return the results
        $rows = array();
        while($r = mysqli_fetch_assoc($userdetails)) {
            $rows[] = $r;
        } 


        print(json_encode($rows));  

?>

我也尝试过使用其他 ResponseHandlers 做同样的事情,但这也不起作用。真的希望得到答案!

编辑:添加有效且在同一活动中完美运行的代码。这是一个帖子请求:

File selectedPicture=new File(picturePath);

        RequestParams params=new RequestParams();

        try{

           params.put("UploadedPic",selectedPicture);
           AsyncHttpClient client = new AsyncHttpClient();
           client.post("http://192.168.1.4/clientservertest/imageupload.php", params,new AsyncHttpResponseHandler());

        }

EDIT2:从 php 页面返回给 POSTMAN 客户端的响应:

[{"id":"7","path":"uploads/speed.png"},{"id":"8","path":"uploads/Untitled.png"},{" id":"9","path":"uploads/Untitled.png"},{"id":"10","path":"uploadsspeed_2.png"},{"id":"11","路径":"uploads/speed_3.png"}]

【问题讨论】:

  • 您能否从运行在 Android 设备上的浏览器访问该 URL?
  • 192.168.1.4/clientservertest/returnUploadedImages.php把你的url改成localhost://192.168.1.4/clientservertest/returnUploadedImages.php
  • @MattO,@Amardeep 我怀疑这是一个 URL 问题,因为类似的代码在同一个活动中为我工作。请参阅我对工作代码的编辑。

标签: php android android-async-http


【解决方案1】:

看起来您的服务器正在返回一个 JSON 数组,因此您应该尝试覆盖 JsonHttpResponseHandler 中的 onSuccess(JSONArray array) 方法。

client.get("http://192.168.1.4/clientservertest/returnUploadedImages.php",
    new JsonHttpResponseHandler() {
        @Override
        public void onSuccess(JSONArray jsonArray) {
            Toast.makeText(getApplicationContext(), "Success!", Toast.LENGTH_LONG).show();
            Log.d("android", jsonArray.toString());
        }
        //etc...
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-26
    • 2012-12-25
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多