gpt4 book ai didi

android - Volley - 带有 header 的 POST 请求

转载 作者:行者123 更新时间:2023-11-29 02:42:21 24 4
gpt4 key购买 nike

我尝试将 volley rquest 与标题一起使用。我的代码如下:

        final String contentType = "text/xml;charset=UTF-8";


Request stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("@@response ", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("@@Error ", error);
}
}) {

@Override
public String getBodyContentType()
{
return contentType;
}

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();

headers.put("Accept-Encoding", "gzip,deflate");
headers.put("Connection", "Keep-Alive");
headers.put("User-Agent", "Apache-HttpClient/4.1.1 (java 1.5)");
return headers;
}

@Override
public byte[] getBody() throws AuthFailureError {
try {
return requestBody.getBytes(getParamsEncoding());
} catch (Exception e) {
Log.i("@@ERROR ", " " + e);
return null;
}
}
};

我的回复看起来像

��������������I�%&/m�{J�J��t��$ؐ@�H���iG#)�*��eVe]f@�흼��{���{��;�N'���?\fdl��J�ɞ!���?~|?"��ez��MQ-?�hw��Q�/�լX^|�Ѻ=�>���8z�T�����2/�U��+��>��yۮݽ�L��"k��>W��]�r7ח�~���k

编解码有一些问题。我怎么解决这个问题?如果我注释掉 headers.put("Accept-Encoding", "gzip,deflate"),我可以获得准确的响应。

最佳答案

我找到了这个答案,

import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Response;
import com.android.volley.toolbox.HttpHeaderParser;
import com.android.volley.toolbox.StringRequest;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.zip.GZIPInputStream;

public class GZipRequest extends StringRequest {

public GZipRequest(int method, String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
super(method, url, listener, errorListener);
}

public GZipRequest(String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
super(url, listener, errorListener);
}

// parse the gzip response using a GZIPInputStream
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
String output = ""; // note: better to use StringBuilder
try {
final GZIPInputStream gStream = new GZIPInputStream(new ByteArrayInputStream(response.data));
final InputStreamReader reader = new InputStreamReader(gStream);
final BufferedReader in = new BufferedReader(reader);
String read;
while ((read = in.readLine()) != null) {
output += read;
}
reader.close();
in.close();
gStream.close();
} catch (IOException e) {
return Response.error(new ParseError());
}
return Response.success(output, HttpHeaderParser.parseCacheHeaders(response));
}
}

来自此链接 https://gist.github.com/premnirmal/8526542

关于android - Volley - 带有 header 的 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43232403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com