GZIP で圧縮された ksoap2 を使用して、BasicHttp WCF Web サービスを使用したいと考えています。
ksoap2 の Android バージョン (http://code.google.com/p/ksoap2-android/) でこれを行う方法はありますか、それとも別の方法がありますか?
GZIP で圧縮された ksoap2 を使用して、BasicHttp WCF Web サービスを使用したいと考えています。
ksoap2 の Android バージョン (http://code.google.com/p/ksoap2-android/) でこれを行う方法はありますか、それとも別の方法がありますか?
HTTPTransportSe を拡張し、call() メソッドをオーバーライドするクラスを作成し、この行をコードに追加しました (ここから取得https://github.com/mosabua/ksoap2-android/blob/master/ksoap2-j2se/src /main/java/org/ksoap2/transport/HttpTransportSE.java )
connection.setRequestProperty("Accept-Encoding","[Here you have to put the encoding]");
次に、InputStream を取得したら、retHeaders 変数を使用してエンコーディングがあるかどうかを確認します。
if (retHeaders != null){
Iterator it = retHeaders.iterator();
boolean found = false;
String encoding = "";
while (it.hasNext()){
HeaderProperty temp = (HeaderProperty) it.next();
if (temp.getKey().contentEquals("content-encoding")){
found = true;
encoding = temp.getValue();
}
}
if (found){
is = new GZIPInputStream(is, new Inflater(true));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[256];
while (true) {
int rd = is.read(buf, 0, 256);
if (rd == -1)
break;
bos.write(buf, 0, rd);
}
bos.flush();
buf = bos.toByteArray();
is.close();
is = new ByteArrayInputStream(buf);
}
}
parseResponse(envelope, is);
そして、「is」をパーサーに渡す必要があります。それをコーディングするためのより良い方法があれば、私はそれについて知りたいです. .))