如何将POST数据从后端传输到Android?

时间:2017-07-21 14:11:28

标签: android json api post okhttp

我是Android开发的新手,并尝试使用OkHttp发出POST请求,在我的Android APP上显示数据,我提到了几个示例,然后将它们组合到下面的类中,但它并没有获得任何数据,我希望从OkHttp类中获取数据,然后将其发送到API类,请问哪里出错了以及如何调整它?

OkHttp类:

public static class OkHttpPost {
    OkHttpClient client = new OkHttpClient();

    RequestBody requestBody = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .build();

    @TargetApi(Build.VERSION_CODES.KITKAT)
    String run(String url) throws IOException {

        Request request = new Request.Builder()

                .method("POST", requestBody.create(null, new byte[0]))
                .url("124.173.120.222")
                .post( requestBody )
                .build();

        try (Response response = client.newCall(request).execute()) {
            return response.body().string();
        }
    }

    public static void main(String[] args) throws IOException {
        OkHttpPost Post = new OkHttpPost();
        String response = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            response = Post.run("124.173.120.222");
        }
        System.out.println(response);
    }}

API类:

ConnectAPI.A110(context, Scode, Manual, new ZooCallback(){
        @Override

        public void onSuccess(JSONObject response){
            super.onSuccess(response);


            try{
                new OkHttpPost();
                open.setText(response.getString("Open"));
                high.setText(response.getString("High"));
                low.setText(response.getString("Low"));
            }
            catch(JSONException e){
                Log.d("A110 gone wrong", e.getMessage());

            }

        }
        public void onFail(String title, String errorMessage){
            super.onFail(title, errorMessage);
            Log.d(TAG, errorMessage);
        }
    });

1 个答案:

答案 0 :(得分:0)

您无法创建顶级静态类(OkHttpPost);这是编译器试图告诉你的内容。另请参阅答案here,了解为何会出现这种情况。要点是:

  

静态归结为该类的实例可以独立存在。或者,反过来说:没有外部类的实例,非静态内部类(=实例内部类)不可能存在。由于顶级类没有外部类,因此它不能是静态的。

     

因为所有顶级类都是静态的,所以在顶级类定义中使用static关键字是没有意义的。