使用post请求,如下所示:
retrofitHelper.getService(OnlineAnalyzeApi.class, UrlConstant.getBaseUrl(mView.getContext()), 120) .newAnalyzeOnline(rangeData, names) .compose(RxSchedulers.<NewAnalysis>io2main()) .subscribe(new RxSubscriber<NewAnalysis>() { @Override public void _onNext(NewAnalysis newAnalysis) { Log.d(TAG, "_onNext: -----获取在线执法分析的数据=" + new Gson().toJson(newAnalysis) + "访问的地址=" + UrlConstant.getBaseUrl(mView.getContext())); mView.dismissProgressDialog(); mView.handlerQueryResult(newAnalysis); } @Override public void _onError(Throwable e, String msg) { mView.dismissProgressDialog(); mView.handlerQueryResult(null); ToastUtil.showShortSafe(msg, mView.getContext()); } });
@POST("/geowebserver/analysis/TbAnalysis.ashx") Observable<Result<AnalysisResult>> new0603AnalyzeOnline(@Query("geometry") String data, @Query("layernames") String layers);
当geometry和layernames两个参数长度不长的时候是可以正常访问接口的,但是当参数长度太长的时候接口请求失败了,猜想是参数长度造成的。
换成body的形式试一试,将参数以hashMap的形式放入body中;
HashMap<String,String> hashMap=new HashMap<>(); hashMap.put("geometry",rangeData); hashMap.put("layernames",names); RequestBody body=getRequestBody(hashMap); retrofitHelper.getService(OnlineAnalyzeApi.class, UrlConstant.getBaseUrl(mView.getContext()), 120) .new0603AnalyzeOnline(body) .compose(RxSchedulers.<Result<AnalysisResult>>io2main()) .subscribe(new RxSubscriber<Result<AnalysisResult>>() { @Override public void _onNext(Result<AnalysisResult> analysisResult) { Log.d(TAG, "_onNext: -----获取在线执法分析的数据=" + new Gson().toJson(analysisResult) + "访问的地址=" + UrlConstant.getBaseUrl(mView.getContext())); mView.dismissProgressDialog(); mView.handlerQueryResult(analysisResult); } @Override public void _onError(Throwable e, String msg) { mView.dismissProgressDialog(); mView.handlerQueryResult(null); ToastUtil.showShortSafe(msg, mView.getContext()); } });
@POST("/geowebserver/analysis/TbAnalysis.ashx") Observable<Result<AnalysisResult>> new0603AnalyzeOnline(@Body RequestBody requestBody);
结果接口参数长也可以正常请求成功,问题解决,记录一下。