gpt4 book ai didi

java - 将 CookieStore 转换为字符串 : pb with encode/decode value

转载 作者:行者123 更新时间:2023-11-30 02:36:32 30 4
gpt4 key购买 nike

我在 CookieStore 对象中有我的 cookie,但要流式传输视频,我需要将我的 CookieStore 转换为字符串,但我在 NodeJS 中的 API(使用 express、cookie-parser 和 passport-local)从不识别cookie,每当我之前尝试对其进行编码/解码时。我认为这是一个愚蠢的问题,只是我不太擅长 HTTP header ,所以我做错了。

有代码:

Method setVideoURIMethod = videovvw.getClass().getMethod("setVideoURI", Uri.class, Map.class);
Map<String, String> params = new HashMap<String, String>(1);
params.put("Cookie", ARequestAPI.getCookieString());
setVideoURIMethod.invoke(videovvw, uri[0], params);

我从这里获得了代码,所以通常它应该可以完美运行:Authentication for Videoview in android

我认为问题出在“ARequest.getCookieString()”:

protected static CookieStore _cookies = null;
...
...
...
public static String getCookieString() {
String cookieString = "";
Log.v("Debug", _cookies.toString());
for (Cookie cookie : _cookies.getCookies()) {
try {
Log.v("Debug", "Decode: " + URLDecoder.decode(cookie.getValue(), "UTF-8"));
Log.v("Debug", "Encode: " + URLEncoder.encode(cookie.getValue(), "UTF-8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
cookieString += cookie.getName() + "=" + cookie.getValue()+ ";";
}
return cookieString;
}

LogCat中的显示:

LogCat

还有我的 API 上的日志:当我使用 CookieStore 发出请求时:

{ 'connect.sid': 's:NUTf8t9o8cepR1yYItMexMxy.WFv/ZlktryfpVZHweVozabW1US4UBvGlWxQR7G7Aamc' }

当我使用将 CookieStore 转换为字符串的函数执行请求时:

{ 'connect.sid': 's:AZXpZmQGX7eJgej9hVA1qaAk.7vWP756Flwbte/qxBRcLOhl/CXMlVO3HVvmsvsEBpzA' }

我尝试了所有选项,甚至 encode(decode()) , ... 但它在我的 API 上从来都不是一个好东西。奇怪的是我试图解码 's%3ANUTf...' (所以 cookie.getValue() )与 javascript 函数“decodeURIComponent() ”,我准确地找到了 's:NUTf8t9o8cepR1yYItMexMxy.WFv/ZlktryfpVZHweVozabW1US4UBvGlWxQR7G7Aamc' ,所以我的 cookie 很好,但我认为我在编码/解码部分做错了。

感谢您的帮助。

编辑:经过多次测试,我发现在 API 上,cookie 的值总是相同的,每当我使用 URLDecoder.decode()、URLDecoder.decode() 或事件直接使用 cookie.getValue() 时,唯一我获得正确值的时间是当我自己“选择/写入”值时,例如“totoauzoo”,例如通过这种扭曲,我在 API 上获得了完全相同的值。但它不适用于我的旧 cookie 值,例如“s:DMCBao7zeS9B2jwIfeQoDZtl.3XPIYIm7y2Bz9/o468v4wxvFZmjDrc6hKk4ty89sIX4”。

Edit2:我可能发现了什么问题,我在 API 上得到了:

使用 HttpGet 和 CookieStore 请求:

headers { host: 'xxx',
connection: 'Keep-Alive',
'user-agent': 'Apache-HttpClient/UNAVAILABLE (java 1.4)',
cookie: 'connect.sid=s%3AGRGciNxOcR4BXHrUG8PikHMX.MyWa6vjW%2BBlcUaaCHHendqc7DEK4aoNFDzm5aabOkDM',
cookie2: '$Version=1' }
cookies { 'connect.sid': 's:GRGciNxOcR4BXHrUG8PikHMX.MyWa6vjW+BlcUaaCHHendqc7DEK4aoNFDzm5aabOkDM' }

使用 setVideoURI 请求:

headers { host: 'xxx', 连接:'保持 Activity ', cookie: 'connect.sid=s%3AKWKdcuXqUpzBIMv0sOGpPxqM.xb14kPsGKvn%2Fv%2BVcfUDzxWsye8QdJfuQgonNocsX3k8', '用户代理': 'stagefright/1.2 (Linux;Android 4.1.2)', '接受编码':'gzip,放气'}cookies { 'connect.sid': 's:KWKdcuXqUpzBIMv0sOGpPxqM.xb14kPsGKvn/v+VcfUDzxWsye8QdJfuQgonNocsX3k8' }

我该如何解决?

最佳答案

我建议检查网络流量本身。Cookie 只不过是 HTTP header ...

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: name=value
Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT

GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: name=value; name2=value2
Accept: */*

我不熟悉您用来设置 cookie 的类,但我会检查两个地方:

1:

params.put("Cookie", ARequestAPI.getCookieString());

此调用是设置 header 还是设置 POST 参数?这应该在网络流量中可见。什么是参数? header 、查询字符串?

2:

ARequestAPI.getCookieString()

此函数的输出是否采用正确的 cookie 值格式,或者它是什么?

最有可能的地方之一就是错误。

关于java - 将 CookieStore 转换为字符串 : pb with encode/decode value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26445771/

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