我感谢任何有关构建将图像上传到flickr的OkHttp请求的帮助。
我搜索过stackoverflow,google,yahoo以及其他任何地方,但似乎无法找到解决方案。
我成功完成了oauth授权过程,可以搜索和下载图像数据等,但是我很难尝试使用OkHttp上传图像。我想我设法使用普通的旧httpUrlConnection上传图像,但我想用OkHttp来做。
我怀疑我的问题在于我没有正确地在OkHttp中构建请求/ requestBody(我不太了解http,多种形式等)。这就是我建立我的要求的方式:
final RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addPart(
Headers.of("Content-Disposition", "form-data; name=\"photo\""),
RequestBody.create(MEDIA_TYPE_PNG, imageFile))
.build();
Request request = new Request.Builder()
.url(uri.toString())
.post(requestBody)
.build();
这是我从flickr得到的错误:
<rsp stat="fail">
<err code="100" msg="Invalid API Key (Key has invalid format)" />
</rsp>
(顺便说一句,我能够成功地将图片上传到imgur)。
我怀疑它与API密钥有关,因为它已成功用于搜索授权。我认为问题可能在于OkHttp&#34;构建请求的方式&#34;。
这里根据flickr应该是什么样子:
如果你手动构建POST查询而不是使用某种服务库,它应该看起来像这样。所有行结尾必须是\ r \ n。
POST / services / upload / HTTP / 1.1 内容类型:multipart / form-data;边界= --------------------------- 7d44e178b0434 主持人:api.flickr.com 内容长度:35261
----------------------------- 7d44e178b0434 内容处理:表格数据;命名=&#34; API_KEY&#34;
3632623532453245 ----------------------------- 7d44e178b0434 内容处理:表格数据;名称=&#34; AUTH_TOKEN&#34;
436436545 ----------------------------- 7d44e178b0434 内容处理:表格数据;命名=&#34; api_sig&#34;
43732850932746573245 ----------------------------- 7d44e178b0434 内容处理:表格数据;命名=&#34;相片&#34 ;;文件名=&#34; C:\ test.jpg放在&#34; 内容类型:image / jpeg
{RAW JFIF DATA} ----------------------------- 7d44e178b0434-- 多部分边界应该是随机生成的,不应出现在有效载荷数据中的任何地方。另外,请不要忘记在RAW JFIF数据之后和最终边界之前结束的行。
所以我的问题是,如何构建OkHttp请求以匹配上述内容?我只需要包含&#34;照片&#34;构建OkHttp请求时的参数,文件名和文件。所有其他参数都包含在传递给我的请求的uri中。
提前致谢
答案 0 :(得分:0)
不确定这是你想要做的。
您可以使用Flickr API来发出这些请求。 https://www.flickr.com/services/developer/api/
任何需要登录的网站通常都必须使用其API来获取身份验证令牌。
希望这有帮助。