将CookieStore转换为string:具有编码/解码值的pb
我有CookieStore对象中的Cookie,但为了将video转换为string,我的NodeJS中的API(使用express,cookie-parser和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);
我有从这里的代码,所以通常它应该完美工作: 在Android中的Videoview的身份validation
我认为问题来自“ 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中的显示:
和我的API上的日志:当我使用CookieStore进行请求时:
{ 'connect.sid': 's:NUTf8t9o8cepR1yYItMexMxy.WFv/ZlktryfpVZHweVozabW1US4UBvGlWxQR7G7Aamc' }
当我用我的函数将CookieStore转换为string的请求时:
{ 'connect.sid': 's:AZXpZmQGX7eJgej9hVA1qaAk.7vWP756Flwbte/qxBRcLOhl/CXMlVO3HVvmsvsEBpzA' }
我尝试了所有的选项,甚至encode(decode())
,但它从来没有一个很好的我的API。 奇怪的是,我试图解码's%3ANUTf...'
(所以cookie.getValue()
)与javascript函数“ decodeURIComponent()
”,我发现确切's:NUTf8t9o8cepR1yYItMexMxy.WFv/ZlktryfpVZHweVozabW1US4UBvGlWxQR7G7Aamc'
,所以我的cookie是好的,但我认为我在编码/解码部分做错了什么。
谢谢你的帮助。
编辑:经过多次testing,我看到在API上的cookie值始终是相同的,每当我使用URLDecoder.decode(),URLDecoder.decode()或事件直接cookie.getValue(),我唯一的时间正确的价值是当我“select/写”自己的价值,如“totoauzoo”,例如与这个拧我得到完全相同的价值的API。 但它不是与我的旧cookie的工作,如“s:DMCBao7zeS9B2jwIfeQoDZtl.3XPIYIm7y2Bz9 / o468v4wxvFZmjDrc6hKk4ty89sIX4”。
编辑2:我可能发现什么是错的,我得到的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:
用户代理“:stagefright / 1.2(Linux; Android 4.1。)。 2)','accept-encoding':'gzip,deflate'} cookies {'connect.sid':'s:KWKdcuXqUpzBIMv0sOGpPxqM.xb14kPsGKvn / v + VcfUDzxWsye8QdJfuQgonNocsX3k8'}
我该如何解决这个问题?
我会build议检查networkingstream量本身。 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
要么
GET /spec.html HTTP/1.1 Host: www.example.org Cookie: name=value; name2=value2 Accept: */*
我不熟悉你用来设置cookie的类,但我会检查两个地方:
1:
params.put("Cookie", ARequestAPI.getCookieString());
这个电话是设置标题还是你设置POST参数? 这应该在networkingstream量中可见。 什么是params ? 标题,查询string?
2:
ARequestAPI.getCookieString()
这个函数的输出是正确的cookie值格式,或者它是什么?
很可能在这些地方之一是错误。
- 文件style.xml中不受支持的节点“项目”
- React-native构build错误:执行任务失败:react-native-maps:prepareComAndroidSupportAppcompatV72301Library'。 >无法展开ZIP
- 无法安装react-native Nativebase:执行任务失败:app:compileDebugJavaWithJavac'
- 如何使用Android作为客户端访问express.js / passport.js API?
- 从外部访问android localhost
- 用node-gcm发送有效载荷通知到android设备
- 如何使Android Java代码调用Node.js代码?
- 如何在nodejs中播放dgramaudio信息
- Nodejs socket.io服务器连接到Android,但不发送消息