use*_*192 5 java servlets okhttp okhttp3
当我的 Java Web 应用程序收到一个 HTTP POST 请求时,它需要从 HttpServletRequest 创建一个新的 OkHttp3 请求并将其发送到另一个 URL。原始发布请求可以是简单的表单数据或多部分。
这是我希望实现的接口:
import okhttp3.Request;
public interface OkHttp3RequestBuilder {
Request create(HttpServletRequest request);
}
Run Code Online (Sandbox Code Playgroud)
看起来挑战归结为我将如何创建 okhttp3.RequestBody。这是实现的相关部分......
final HttpUrl targetUrl = HttpUrl.get("http://internal.xyz.com");
final RequestBody requestBody = // ?????
final Request httpRequest = new Request.Builder()
.post(requestBody)
.url(targetUrl)
.build();
return httpRequest;
Run Code Online (Sandbox Code Playgroud)
我该怎么做?有什么建议?谢谢!
感谢您的回答,ETL!这似乎对我有用:
@Override
public RequestBody getRequestBody(final HttpServletRequest httpServletRequest) throws IOException {
final InputStream inputStream = httpServletRequest.getInputStream();
final byte[] requestBodyBytes = ByteStreams.toByteArray(inputStream);
final String contentType = httpServletRequest.getContentType();
final MediaType mediaType = MediaType.parse(contentType);
final RequestBody requestBody = RequestBody.create(mediaType, requestBodyBytes);
return requestBody;
}
Run Code Online (Sandbox Code Playgroud)