OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "q=609&client=122&layer=explore&key=w3S4BEmDKd8Q3VCCO2OZTnI8sAQxIFwA&name=utkarsh%20sharma&password=utk&phone=1111111112");
Request request = new Request.Builder()
.url("http://explore-uat.mapmyindia.in/explore-api/v1.3/")
.post(body)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Cache-Control", "no-cache")
.addHeader("Postman-Token", "44666246-b697-488f-9410-df09f7faa53a")
.build();
Response response = client.newCall(request).execute();
我正在使用此代码向API发出发布请求。 我在课堂上使用了很多次。 是否可以在我的课程中制作OKhttpClient的bean并自动装配
请回复!提前致谢
答案 0 :(得分:1)
我将其声明为Spring bean,因为与Singleton解决方案相比,它更易于测试。但是,由于您使用的是Spring Boot,因此也可以使用RestTemplate
,如此处所述:https://spring.io/guides/gs/consuming-rest/
答案 1 :(得分:1)
您可以通过在配置中的某个位置声明一个bean来做到这一点:
@Configuration
public class HttpClientConfiguration {
@Bean
public OkHttpClient httpClient() {
return new OkHttpClient();
}
}
如果没有另外声明,则每个spring bean默认情况下都是一个单例:https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s04.html
关于最初的问题。我认为您应该将其声明为四季豆。它应该简化测试。
答案 2 :(得分:0)
以下定义的单例就足够了:
public class OkHttpFactory {
private static OkHttpClient client = new OkHttpClient();
public OkHttpClient getClient() {
return client;
}
}