2 kornberg fresnel kornberg_fresnel 于 2016.05.08 23:13 提问

OkHttp使用post方式提交multipart/form-data 5C

之前使用HttpClient,但是由于AS的问题,放弃了,改用OkHttp,但还是出现提交了表单但是没有出现正常的成功跳转,
同时返回状态码却是200 OK;还有就是,我的post方法指定的url是一个get方式提交数据的url,然后在这个url的基础上
再提交post数据,截图如下:

这是multipart/form-data:
图片说明

这是我的代码:

图片说明

5个回答

caozhy
caozhy   Ds   Rxr 2016.05.08 23:15

建议你和浏览器提交的比较下,特殊字符用base64转码下。

kornberg_fresnel
kornberg_fresnel 为什么要用base64转码,我参照stack overflow上面写的。。
一年多之前 回复
kornberg_fresnel
kornberg_fresnel   2016.05.08 23:32

这是stack overflow上面的写法,附上参照数据:

图片说明

l_vaule
l_vaule   2016.05.09 00:26

他返回的状态码是多少

l_vaule
l_vaule 回复kornberg_fresnel: 你看看我给你发的文章呗,模仿着来我不相信搞不定的。
一年多之前 回复
kornberg_fresnel
kornberg_fresnel 中间搁置了几天。response却是200 ok,似乎回应了我的cookie,你看看:Request request = new Request.Builder().url("http://192.168.1.1/cgi-bin/luci/" + stoke + "/admin/guide/").header("Connection", "keep-alive").addHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8").addHeader("Content-Type","multipart/form-data; boundary=----WebKitFormBoundaryy5MZpl0mcqPZCYZT").addHeader("User-Agent", userAgent) .addHeader("Cookie", cookie) .post(requestBody).build();
一年多之前 回复
l_vaule
l_vaule 我去,,你还没搞好啊。。。
一年多之前 回复
kornberg_fresnel
kornberg_fresnel 我换了使用cookie的方式,同时post表单,但还是不行。
一年多之前 回复
l_vaule
l_vaule 哦,我记起来了,你用的okhttp应该给call加个监听,等他返回之后会回调请求成功的方法而不应该这样直接去拿返回值。不知道你这种写法在哪找的,你可以参照这篇文章改一下(不知道你下面贴上httpClient的代码意图是什么)http://blog.csdn.net/lmj623565791/article/details/47911083
一年多之前 回复
kornberg_fresnel
kornberg_fresnel 会不会是我先使用了一个get方式传递数据的url,导致post方法没法用了?
一年多之前 回复
kornberg_fresnel
kornberg_fresnel 200
一年多之前 回复
ONGYUNHAI
ONGYUNHAI   2016.05.10 10:17

图片说明
你这里把参数放在路径里了

kornberg_fresnel
kornberg_fresnel 回复沉默的雄鹰: 这是一个cookie值,后来解决了,谢谢,而且那是一个分号,哈哈
一年多之前 回复
ONGYUNHAI
ONGYUNHAI 你的地址写的也太随心所欲了
一年多之前 回复
ONGYUNHAI
ONGYUNHAI 而且还有个冒号
一年多之前 回复
dongfeng9ge
dongfeng9ge   Ds   Rxr 2016.05.23 15:42

OKhttp有这种bug?你可以试试Volley

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!