7 apache-httpclient-4.x google-http-client
我正在尝试创建POST包含multipart-form-data该要求的请求NT Credentials.身份验证请求导致POST重新发送,我得到一个不可重复的实体异常.
我尝试包装生成的MultipartContent实体BufferedHttpEntity但是它会抛出NullPointerExceptions?
final GenericUrl sau = new GenericUrl(baseURI.resolve("Record"));
final MultipartContent c = new MultipartContent().setMediaType(MULTIPART_FORM_DATA).setBoundary("__END_OF_PART__");
final MultipartContent.Part p0 = new MultipartContent.Part(new HttpHeaders().set("Content-Disposition", format("form-data; name=\"%s\"", "RecordRecordType")), ByteArrayContent.fromString(null, "C_APP_BOX"));
final MultipartContent.Part p1 = new MultipartContent.Part(new HttpHeaders().set("Content-Disposition", format("form-data; name=\"%s\"", "RecordTitle")), ByteArrayContent.fromString(null, "JAVA_TEST"));
c.addPart(p0);
c.addPart(p1);
Run Code Online (Sandbox Code Playgroud)
文件ByteArrayContent说
AbstractInputStreamContent的具体实现,它根据字节数组的内容生成可重复的输入流.
使所有部件可重复并不能解决问题.因为这段代码
System.out.println("c.retrySupported() = " + c.retrySupported());输出c.retrySupported() = true.
我找到了以下文档:
1.1.4.1.可重复实体实体可以是可重复的,这意味着其内容可以被多次读取.这仅适用于自包含实体(如ByteArrayEntity或StringEntity)
我现在通过提取字符串内容将我转换MultipartContent为ByteArrayContent具有multi/part-form媒体类型的a 仍然得到相同的错误!
但是当我试着打电话时,我仍然得到以下异常request.execute().
Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity.
Run Code Online (Sandbox Code Playgroud)
ApacheHttpTransport创建一个可重复的实体呢?小智 5
我必须修改所有继承的类,HttpContent以便它们能够正确报告,.retrySupported()以便ApacheHttpTransport在输入代码时它将正确地创建可重复的内容.
这些更改是针对版本进行的,1.20.0因为这是我正在使用的.我正在提交针对dev分支的拉取请求,HEAD所以希望这个或某个版本的这个将进入下一个版本.
| 归档时间: |
|
| 查看次数: |
903 次 |
| 最近记录: |