Articles of 翻新

使用cookies与Robospice改造请求

任何人都可以请build议我一种方式来pipe理robospice翻新types的HTTP请求中的cookie。 我有一个身份validation系统,它具有login,几个GET HTTP请求和一个注销。 在login期间,我需要保存会话,并为其余的GET HTTP请求使用相同的会话,当我注销会话必须被清除。 这里的login是通过JSON格式发送和接收数据的HTTP POST请求。 我正在使用robospice翻新,因为它可以轻松pipe理login和注销请求。

改进抛出错误期望的BEGIN_ARRAY,但是BEGIN_OBJECT

嗨,我是新的改造库,我有parsing一些JSON的问题。 我已经看了一些Stackoverflow的其他解决scheme,但没有太多的运气与我的问题。 即时通讯试图让一个简单的web服务工作。 任何build议将不胜感激.. Json文件 {"employees":[ {"firstName":"John", "lastName":"Doe"}, {"firstName":"Anna", "lastName":"Smith"}, {"firstName":"Peter", "lastName":"Jones"} ]} 请求方法 public void requestEmployeeData(String uri){ RestAdapter adapter = new RestAdapter.Builder().setEndpoint(ENDPOINT).build(); EmployeesAPI employeesAPI =adapter.create(EmployeesAPI.class); employeesAPI.getEmployees(new Callback<List<Employees.employeesclass>>() { @Override public void success(List<Employees.employeesclass> employees, Response response) { List<String> names = new ArrayList<String>(); Log.v("nas", "The Employees Webservice Success" + response); } @Override public void failure(RetrofitError retrofitError) […]

改造 – 太多的后续要求:21

我正在使用改造来提出请求。 我有以下错误: java.net.ProtocolException:太多的后续请求:21 代码如下所示: private OkHttpClient httpClient; private CookieManager cookieManager; public <S> S createCookieService(Class<S> serviceClass) { httpClient.interceptors().clear(); httpClient.setCookieHandler(cookieManager); Retrofit.Builder builder = new Retrofit .Builder() .client(httpClient) .baseUrl(url) .addConverterFactory(GsonConverterFactory.create()); Retrofit retrofit = builder.client(httpClient).build(); return retrofit.create(serviceClass); } 然后我提出要求: 例: 1)login @POST("/login") Call<User> login(); 2)一些要求: @GET("/request") Call<PojoPojo> getPojo(); 我得到这个错误太多的后续要求:21。 请帮忙。

即使标题状态码是200,Retrofit也会调用failure()方法

我正在使用我的后端通信改造,并在我的改造呼叫片段下面: serverObject.createEvent(Utils.getAuthHeader(), params, new Callback<CreateEventResponse>() { @Override public void success(CreateEventResponse outputObj, retrofit.client.Response response) { Log.d(TAG, outputObj.getTitle() + " is successfully created."); setResult(Activity.RESULT_OK); finish(); } @Override public void failure(RetrofitError retrofitError) { //Header status code Log.e("failure", String.valueOf(retrofitError.getResponse().getStatus())); Log.e("failure", String.valueOf(retrofitError.getResponse().getBody())); } }); 上面的代码在Logcat中输出: 04-16 16:26:11.751 25131-25131/com.android.myapp.app E/failure﹕ 200 04-16 16:26:11.751 25131-25131/com.android.myapp.app E/failure﹕ null 谁可能呢? 任何机构请帮助为什么会发生这种情况。 另外我设置了setLogLevel(RestAdapter.LogLevel.FULL); 所以我可以看到我的logcat中的每个值。 我的回应来自服务器正确,但为什么失败()被调用? […]

如何使用retrofit 2进行POST请求?

我只能从文档中运行Hello World例子(GithubService)。 问题是当我运行我的代码,我得到了以下错误,在onFailure() 使用JsonReader.setLenient(true)在行1列1path$接受格式错误的JSON 我的API需要POST params值,所以不需要将它们编码为JSON,但是它确实以JSON的forms返回响应。 对于响应,我使用工具生成了ApiResponse类。 我的界面: public interface ApiService { @POST("/") Call<ApiResponse> request(@Body HashMap<String, String> parameters); } 以下是我如何使用该服务: HashMap<String, String> parameters = new HashMap<>(); parameters.put("api_key", "xxxxxxxxx"); parameters.put("app_id", "xxxxxxxxxxx"); Call<ApiResponse> call = client.request(parameters); call.enqueue(new Callback<ApiResponse>() { @Override public void onResponse(Response<ApiResponse> response) { Log.d(LOG_TAG, "message = " + response.message()); if(response.isSuccess()){ Log.d(LOG_TAG, "—–isSuccess—-"); }else{ Log.d(LOG_TAG, "—–isFalse—–"); […]

如何发送数组/列表与改造

我需要发送一个列表/整数值的数组与改造服务器(通过POST)我这样做: @FormUrlEncoded @POST("/profile/searchProfile") Call<ResponseBody> postSearchProfile( @Field("age") List<Integer> age }; 并像这样发送: ArrayList<Integer> ages = new ArrayList<>(); ages.add(20); ages.add(30); ISearchProfilePost iSearchProfile = gsonServerAPIRetrofit.create(ISearchProfilePost.class); Call<ResponseBody> call = iSearchProfile.postSearchProfile( ages ); 问题是,值到达服务器而不是逗号分隔。 所以那里的价值就像年龄:2030而不是年龄:20,30 。 我正在阅读(例如在这里https://stackoverflow.com/a/372​​54442/1565635 ),有些已经成功地通过使用[]像数组一样写入参数,但是只会导致名为age []:2030的参数。 我也尝试使用数组以及与string列表。 同样的问题。 一切都直接来自一个条目。 那我能做什么?

MockWebServer和调用callback

我想模拟MockWebServer的networking通信。 不妥协的改造callback从来没有调用。 我的代码: MockWebServer server = new MockWebServer(); server.enqueue(new MockResponse().setResponseCode(200).setBody("{}")); server.play(); RestAdapter restAdapter = new RestAdapter.Builder().setConverter(new MyGsonConverter(new Gson())) .setEndpoint(server.getUrl("/").toString()).build(); restAdapter.create(SearchService.class).getCount(StringUtils.EMPTY, new Callback<CountContainer>() { @Override public void success(CountContainer countContainer, Response response) { System.out.println("success"); } @Override public void failure(RetrofitError error) { System.out.println("error"); } }); server.shutdown(); 当我使用改造没有callback它的作品。

执行重试时逻辑

我有一个应用程序需要会话(cookie)来处理networking通话。 即时通讯使用Retrofit+RxJava 。 但是,会话可能会过期(401未授权状态的改装错误),我想重新authentication(获取新鲜的cookies),并在这种情况下重试以前的调用。 我将如何与RxJava做到这RxJava ? 我的例子: getServerApi().getDialogs(offset, getCookies()) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .retryWhen(observable -> {…}) // Need some logic .subscribe(dialogsEnvelope -> getView().setDialogs(dialogsEnvelope), throwable -> getView().setError(processFail(throwable)));

在使用Retrofit时如何在离线时对API调用进行排队

我正在使用Retrofit与rx-java结合使用,并且有以下问题: 有没有一种方法可以在设备脱机时将API调用排队到服务器,以便在设备再次联机时可以触发它们。

javax.net.ssl.SSLHandshakeException:当SSLv2和SSlv3禁用(仅限TLS)(和更高版本)时,Android 5.0.0握手失败

这是我的第一篇文章,我将尽我所能,尽可能清楚(对不起我的英文)。 这是我的麻烦,我正在使用改造:1.9.0和okhttp:2.7.5来执行API调用。 一切都很好,直到我的服务器提供商禁用SLLv2和SSLv3导致的安全问题(在3月份发现溺水失败)。 现在我检查有关我的提供商的信息,他只允许从https://www.ssllabs.com/与密码(TLS 1.0 TLS_RSA_WITH_3DES_EDE_CBC_SHA无FS)的TLSv1。 好吧,这是我所做的所有testing和结果: [更新问题已解决] find一种方法来解决这个问题,在我的第二个答案。 更新似乎问题来自谷歌API版本。 当我testingAPI 18时,一切正常。 当它在Android上,或者等于5.0.0时,就会失败。 首先testing CONF。 回顾一下: compileSdkVersion 23 buildToolsVersion '23 .0.2' minSdkVersion 18 targetSdkVersion 21 改造:1.9.0 okhttp:2.7.5 Android版本> 5.0.0(但在每个设备上都是一样的) Rest Client(LoginRestClient): public class LoginRestClient { private static final String BASE_URL = ""; private LoginApiService apiService; public LoginRestClient() { Gson gson = new GsonBuilder() .setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'") .create(); […]