Java 使用ApacheHttpClient为接受gzip编码的post错误上的多部分数据使用Web服务。
这是我用来使用Web服务的代码,比如说“urn:auth#createEmp”。现在,当我使用同一台服务器时 “urn:authe#createUser”它抛出java.util.zip.ZipException。节目如下Java 使用ApacheHttpClient为接受gzip编码的post错误上的多部分数据使用Web服务。,java,web-services,gzip,apache-httpcomponents,Java,Web Services,Gzip,Apache Httpcomponents,这是我用来使用Web服务的代码,比如说“urn:auth#createEmp”。现在,当我使用同一台服务器时 “urn:authe#createUser”它抛出java.util.zip.ZipException。节目如下 package pack; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import org.apache.http.HttpEn
package pack;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.HttpClientBuilder;
public class WebServiceClient {
public static void main(String[] args) throws ClientProtocolException, IOException {
String url = "http://localhost/ProjectName/WebService.php";
HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(url);
post.setHeader("SOAPAction", "urn:authe#createUser");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("firstname", "Siva", ContentType.TEXT_PLAIN);
builder.addTextBody("lastname", "LASTNAME", ContentType.TEXT_PLAIN);
// builder.addBinaryBody("file", new
// File("..."),ContentType.APPLICATION_OCTET_STREAM, "file.ext");
HttpEntity multipart = builder.build();
post.setEntity(multipart);
HttpResponse response = client.execute(post);
System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
System.out.println(result.toString());
}
}
控制台的响应是:
Response Code : 200
Exception in thread "main" java.util.zip.ZipException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:164)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:78)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:90)
at org.apache.http.client.protocol.ResponseContentEncoding$1.create(ResponseContentEncoding.java:67)
at org.apache.http.client.entity.LazyDecompressingInputStream.initWrapper(LazyDecompressingInputStream.java:54)
at org.apache.http.client.entity.LazyDecompressingInputStream.read(LazyDecompressingInputStream.java:72)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at pack.WebServiceClient.main(WebServiceClient.java:78)
响应代码:200
线程“main”java.util.zip.ZipException中的异常:不是GZIP格式
位于java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:164)
位于java.util.zip.GZIPInputStream。(GZIPInputStream.java:78)
位于java.util.zip.GZIPInputStream。(GZIPInputStream.java:90)
位于org.apache.http.client.protocol.ResponseContentEncoding$1.create(ResponseContentEncoding.java:67)
位于org.apache.http.client.entity.LazyDecompressingInputStream.initWrapper(LazyDecompressingInputStream.java:54)
位于org.apache.http.client.entity.LazyDecompressingInputStream.read(LazyDecompressingInputStream.java:72)
位于sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
位于sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
位于sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
位于java.io.InputStreamReader.read(InputStreamReader.java:184)
在java.io.BufferedReader.fill中(BufferedReader.java:154)
位于java.io.BufferedReader.readLine(BufferedReader.java:317)
位于java.io.BufferedReader.readLine(BufferedReader.java:382)
位于pack.WebServiceClient.main(WebServiceClient.java:78)
我尝试搜索选项,用gzip格式对请求进行编码。直到现在还没有解决办法。帮我解决这个问题