Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用编码/解码值将CookieStore转换为字符串:pb_Java_Javascript_Android_Node.js_Cookies - Fatal编程技术网

Java 使用编码/解码值将CookieStore转换为字符串:pb

Java 使用编码/解码值将CookieStore转换为字符串:pb,java,javascript,android,node.js,cookies,Java,Javascript,Android,Node.js,Cookies,我在CookieStore对象中有我的cookie,但要流式传输视频,我需要将我的CookieStore转换为字符串,但我在NodeJS中的API(使用express、cookie解析器和passport local)从未识别cookie的值,无论我以前何时尝试对其进行编码/解码。我认为这是一个愚蠢的问题,只是我不太擅长HTTP头,所以我做错了 代码如下: Method setVideoURIMethod = videovvw.getClass().getMethod("setVideoURI"

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

代码如下:

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);
LogCat中的显示:

以及我的API上的日志: 当我使用CookieStore执行请求时:

{ 'connect.sid': 's:NUTf8t9o8cepR1yYItMexMxy.WFv/ZlktryfpVZHweVozabW1US4UBvGlWxQR7G7Aamc' }
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' }
当我使用将CookieStore转换为字符串的函数执行请求时:

{ 'connect.sid': 's:AZXpZmQGX7eJgej9hVA1qaAk.7vWP756Flwbte/qxBRcLOhl/CXMlVO3HVvmsvsEBpzA' }
我尝试了所有选项,甚至
编码(decode())
。。。但在我的API中,它从来都不是一个好的API。 奇怪的是,我试图用javascript函数“
decodeURIComponent()
”来解码
的%3ANUTf…”
(所以
cookie.getValue()
),我发现了
:nutf8t9o8cepr1yyitmexxy.WFv/zlktryfpvzhwevozabw1us4ubvglwqr7g7aamc>,所以我的cookie很好,但我认为我在编码/解码部分做错了什么

谢谢你的帮助

编辑:经过多次测试,我发现在API上cookie的值总是相同的,每当我使用urldecker.decode()、urldecker.decode()或event directly cookie.getValue()时,我得到正确值的唯一时间是我自己“选择/写入”值,比如“totooauzoo”例如,通过这种方式,我在API上得到了完全相同的值。但它不适用于我的旧cookie值,如“s:DMCBao7zeS9B2jwIfeQoDZtl.3XPIYIm7y2Bz9/o468v4wxvfzmjdrc6hk4ty89six4”

Edit2:我可能发现了问题所在,我从API上了解到:

向HttpGet和CookieStore请求:

{ 'connect.sid': 's:NUTf8t9o8cepR1yYItMexMxy.WFv/ZlktryfpVZHweVozabW1US4UBvGlWxQR7G7Aamc' }
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的请求:

标题{host:'xxx', 连接:“保持活力”, cookie:'connect.sid=s%3AKWKdcuXqUpzBIMv0sOGpPxqM.xb14kPsGKvn%2Fv%2bvcfufdzxwsye8qdjfuqgonnocsx3k8', “用户代理”:“stagefright/1.2(Linux;Android 4.1.2)”, “接受编码”:“gzip,deflate”} cookies{'connect.sid':'s:KWKdcuXqUpzBIMv0sOGpPxqM.xb14kPsGKvn/v+VcfUDzxWsye8QdJfuQgonNocsX3k8'}


我如何解决这个问题?

我建议检查网络流量本身。 Cookie只是HTTP头

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

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

1:

params.put("Cookie", ARequestAPI.getCookieString());
ARequestAPI.getCookieString()
此调用是设置标题还是设置POST参数?这应该在网络流量中可见。什么是情妇?标题,查询字符串

2:

params.put("Cookie", ARequestAPI.getCookieString());
ARequestAPI.getCookieString()
此函数的输出是否为正确的cookie值格式,或者是什么格式


错误很可能就在其中一个地方。

如何检查网络流量?因此,对于1)我将其设置为:对于2)我更确信它的格式正确,因为我自己做了这个函数,但是cookie的名称在API上是好的,只是值是错误的。好吧,它与charlesproxy完美配合,我的cookie很好,但这对我的问题没有帮助,因为它必须在没有它的情况下工作:/n在删除CharlesProxy后,它再次工作,所以我重新启动计算机和服务器,仍然工作,创建一个apk并在我的手机上尝试,仍然很好。我真的不知道是不是错了,但现在看来它起作用了。多亏了你。你已经按下了机器上的神奇重启键,这一直都在发生;)