我们如何在okhttp中使用httpclient,httpdelete,httpput

时间:2017-02-27 09:05:56

标签: android api

我在api调用中使用了org.apache.http库。但现在我将org.apache.http库更改为okhttp库。 org.apache.http库不支持更高版本的sdk。在org.apache.http库中,我使用httpdelete,httpclient,httpput来调用api。但是在okhttp中如何使用这些方法。

高级感谢和问候

1 个答案:

答案 0 :(得分:3)

查看org.apache.http.client.methods.Http*类的源代码,您将看到每个类只是getMethod()函数的简单覆盖以及构造函数定义。

@Override
public String getMethod() {
  return METHOD_NAME;
}

HttpClient为自己的内部API执行此操作并执行if (request instanceof HttpPut) { /* do the thing */ }

等检查

如何在OkHttp中获得等效代码?

OkHttp使用Builder类构造其类的实例。因此,要发出PUT请求,请使用:

/* HttpClient */
HttpUriRequest request = new HttpPut(/* Target URL */);

/* OkHttp */
Request request = new Request.Builder()
        .url(/* Target URL */)
        .put(/* RequestBody instance (e.g. form content) */)
        .headers(/* Headers object */)
        .build());

Builder类包含许多"方便"制作常见请求的方法。这些可以用来代替上面的put()方法。

get(), head(), post(RequestBody body), delete(RequestBody body), delete(), put(RequestBody body), patch(RequestBody body)

或者,您可以使用method(String method, RequestBody body)函数从String分配方法。

大多数(如果不是全部)OkHttp类都将使用Builders。所以你的代码不能直接翻译。