Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 改装从服务器获取空响应_Android_Json_Rest_Retrofit - Fatal编程技术网

Android 改装从服务器获取空响应

Android 改装从服务器获取空响应,android,json,rest,retrofit,Android,Json,Rest,Retrofit,我在使用改型解析json时遇到了麻烦。我调用了WebAPI,得到了200个状态码,但改型后给了我NullObject异常。如果有其他解决方案,我们将不胜感激。1) 改装1.9.0和2)改装2.0.2 我的json { "$id": "1", "objpo": { "$id": "2", "PODetail": [{ "$id": "3", "Purcha

我在使用改型解析json时遇到了麻烦。我调用了WebAPI,得到了200个状态码,但改型后给了我NullObject异常。如果有其他解决方案,我们将不胜感激。1) 改装1.9.0和2)改装2.0.2

我的json

{
        "$id": "1",
        "objpo": {
            "$id": "2",
            "PODetail": [{
                "$id": "3",
                "PurchaseOrderDetailId": 50003,
                "PurchaseOrderId": 0
            }],
            "POAttachFiles": [{
                "$id": "4",
                "Attachmentid": 33277,
                "AttachFile": "createpo.png"
            }],
            "StatusName": null,
            "Country": "UK"
        }
    }
来自

改装版本2.0.2

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.squareup.retrofit2:retrofit:2.0.2'
    compile 'com.squareup.retrofit2:converter-gson:2.0.2'
}


 public interface POAPI {
        //Testing
        @FormUrlEncoded
        @Headers("Accept:application/json")
        @POST("PODetails")
        Call<PODetailMaster> getPoDetailList(@Field("PurchaseOrderIdEyrypt") String poIdEncrypt);

    }
 public void PODeatilCallTest(final Context mContext, String PoEncrypId) {

        final StringBuffer sb=new StringBuffer();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://host_url/api/PurchaseOrder/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        POAPI objPOAPI = retrofit.create(POAPI.class);

        Call<PODetailMaster> objCall=objPOAPI.getPoDetailList(PoEncrypId);

        objCall.enqueue(new Callback<PODetailMaster>() {
            @Override
            public void onResponse(Call<PODetailMaster> call, Response<PODetailMaster> response) {
                Log.i("Code",""+response.code());
                PODetailMaster objPoDetailMaster=response.body();

                Objpo objPo=objPoDetailMaster.getObjpo();
                String country=objPo.getCountry(); //<---getting null object
                Log.i("PO",country);

                for(PODetail objPoDetail:objPo.getPODetail()){
                    Log.i("ID:",""+objPoDetail.getPurchaseOrderDetailId());
                }
            }

            @Override
            public void onFailure(Call<PODetailMaster> call, Throwable t) {

            }
        });

    }
依赖项{
编译文件树(包括:['*.jar'],目录:“libs”)
testCompile'junit:junit:4.12'
编译'com.android.support:appcompat-v7:23.3.0'
编译'com.android.support:design:23.3.0'
编译'com.google.code.gson:gson:2.6.2'
编译'com.squareup.Refught2:Refught2.0.2'
编译'com.squareup.Refught2:converter gson:2.0.2'
}
公共接口POAPI{
//测试
@FormUrlEncoded
@标题(“接受:应用程序/json”)
@邮政(“详细信息”)
调用getPoDetailList(@Field(“PurchaseOrderIdEyrypt”)字符串poIdEncrypt);
}
public void PODeatilCallTest(最终上下文mContext,字符串PoencryId){
最终StringBuffer sb=新StringBuffer();
改装改装=新改装.Builder()
.baseUrl(“http://host_url/api/PurchaseOrder/")
.addConverterFactory(GsonConverterFactory.create())
.build();
POAPI objPOAPI=reformation.create(POAPI.class);
调用objCall=objPOAPI.getPoDetailList(PoenType);
enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
Log.i(“Code”,“”+response.Code());
PODetailMaster objPoDetailMaster=response.body();
Objpo Objpo=objPoDetailMaster.getObjpo();

字符串country=objPo.getCountry();//objPo objPo=objpourchaseorder.getObjpo();?从中获取的“objpourchaseorder”值不是从resonce获取的值,或者其他任何东西尝试再次检查改型的哪个版本我正在使用改型1.9.0这是从API获取数据的当前方法吗?比如objPo objPo=objpourchaseorder.getObjpo();或者其他方式?我在Google Crome的Advance REST客户端上测试了这个web api调用,运行良好,获得了200条数据响应。我不这么认为,如果你是2.0版的新版本,那么uObjpo objPo=objPurchaseOrder.getObjpo();?“objPurchaseOrder”的值在哪里假设您没有从resonce或其他任何东西获得此值,请尝试再次检查改型r u使用的版本我正在使用改型1.9.0这是从API获取数据的当前方法吗?例如Objpo Objpo=objPurchaseOrder.getObjpo();或者其他方式?我在Google Crome的Advance REST客户端测试了这个web api调用,运行良好,用数据获取响应200。我不这么认为,如果你是retro中的新用户,尝试使用2.0版本,它对你来说更好、更容易理解
  @FormUrlEncoded
    @Headers("Accept:application/json")
    @POST(ConstantValues.PO_DETAILS_ENDPOINT) // my web api's url
    void PoDetailListService(
            @Field("PurchaseOrderIdEyrypt") String poIdEncrypt,
            Callback<PODetailMaster> response
    );
 public void PODeatilCall(final Context mContext, String PoEncrypId) {
 RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint(ConstantValues.HOST_NAME)
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .build();

  POAPI objPOAPI = restAdapter.create(POAPI.class);
  final StringBuffer sb=new StringBuffer();
  objPOAPI.PoDetailListService(PoEncrypId, new Callback<PODetailMaster>() {
            @Override
            public void success(PODetailMaster objPurchaseOrder, Response 
             response) {
                Log.i("StatusCode",""+response.getStatus());
                Objpo objPo=objPurchaseOrder.getObjpo();

                //-----------------objPo is null here-------------------//
                String country=objPo.getCountry(); //<---getting null object 
                Log.i("PO",country);


                for(PODetail objPoDetail:objPo.getPODetail()){
                   Log.i("ID:",""+objPoDetail.getPurchaseOrderDetailId());
                 }
             }

            @Override
            public void failure(RetrofitError error) {
                dialog.dismiss();
                Toast.makeText(mContext, error.toString(),   
                   Toast.LENGTH_SHORT).show();
                sb.append("Network Error");
            }
        });

}
05-17 16:36:14.435 31529-31529/com.test E/AndroidRuntime: FATAL EXCEPTION: main
                                                                Process: com.test, PID: 31529
                                                                java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.test.Model.PoDetails2.Objpo.getCountry()' on a null object reference
                                                                    at com.test.Utils.Common$2.success(Common.java:169)
                                                                    at com.test.Utils.Common$2.success(Common.java:158)
                                                                    at retrofit.CallbackRunnable$1.run(CallbackRunnable.java:45)
                                                                    at android.os.Handler.handleCallback(Handler.java:739)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                    at android.os.Looper.loop(Looper.java:148)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.squareup.retrofit2:retrofit:2.0.2'
    compile 'com.squareup.retrofit2:converter-gson:2.0.2'
}


 public interface POAPI {
        //Testing
        @FormUrlEncoded
        @Headers("Accept:application/json")
        @POST("PODetails")
        Call<PODetailMaster> getPoDetailList(@Field("PurchaseOrderIdEyrypt") String poIdEncrypt);

    }
 public void PODeatilCallTest(final Context mContext, String PoEncrypId) {

        final StringBuffer sb=new StringBuffer();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://host_url/api/PurchaseOrder/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        POAPI objPOAPI = retrofit.create(POAPI.class);

        Call<PODetailMaster> objCall=objPOAPI.getPoDetailList(PoEncrypId);

        objCall.enqueue(new Callback<PODetailMaster>() {
            @Override
            public void onResponse(Call<PODetailMaster> call, Response<PODetailMaster> response) {
                Log.i("Code",""+response.code());
                PODetailMaster objPoDetailMaster=response.body();

                Objpo objPo=objPoDetailMaster.getObjpo();
                String country=objPo.getCountry(); //<---getting null object
                Log.i("PO",country);

                for(PODetail objPoDetail:objPo.getPODetail()){
                    Log.i("ID:",""+objPoDetail.getPurchaseOrderDetailId());
                }
            }

            @Override
            public void onFailure(Call<PODetailMaster> call, Throwable t) {

            }
        });

    }