最近在接豆瓣的分享,期间碰到了较多的陷阱,一路磕磕碰碰,还好最终都解决了。下面总结下期间耗费了我一天的一个巨坑。。。
第一次使用在使用豆瓣广播api(shuo/v2/statuses/)即碰壁,查找原因后发现最后的“/”必不可少。
那么我们继续:
我用的是httpclient3.1,返回结果为{"msg":"不支持的图片格式","r":0}
怎么办?检查多次代码,尝试调整编码多次后,依旧,宣告失败,上豆瓣api小组上搜索,满眼尽是提问的,官方的回复也很简单:"我们的api没问题,请检查参数Content-Type"。
好吧我怕你了,既然你说你们的api没问题,我拿你们提供的sdk参考下总可以吧。于是 下载sdk,我x,老版本的。attachments方式的,不支持image参数。
灵光一显,没准豆瓣自己官方的android里可以用一定的借鉴意义,反编译之,上 应用汇下载豆瓣广播,使用 apk2java解压,jdgui反编译之。
发现android客户端里使用的是httpclient4。参数设置可我也没什么不同。
第一次使用在使用豆瓣广播api(shuo/v2/statuses/)即碰壁,查找原因后发现最后的“/”必不可少。
那么我们继续:
- MultiThreadedHttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager();
- HttpClient client = new HttpClient(httpConnectionManager);
- PostMethod postMethod = new PostMethod("https://api.douban.com/shuo/v2/statuses/");
- Part[] parts = new Part[2];
- parts[0] = new StringPart("source","XXXXXXXXX", "UTF-8");
- parts[0] = new StringPart("text", "ttttt", "UTF-8");
- File file = new File("D:\\upload.jpg");
- FilePart filePart = new FilePart("image", file.getName(), file,new MimetypesFileTypeMap().getContentType(file), "UTF-8");
- parts[1] = filePart;
- MultipartRequestEntity requestEntity = new MultipartRequestEntity(parts, postMethod.getParams());
- postMethod.setRequestEntity(requestEntity);
- postMethod.setRequestHeader("Authorization", "Bearer XXXXXX");
- int statusCode = client.executeMethod(postMethod);
- String response = new String(postMethod.getResponseBody(), "UTF-8");
- System.out.println("response--->" + response);
- System.out.println("statusCode--->" + statusCode);
MultiThreadedHttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager();
HttpClient client = new HttpClient(httpConnectionManager);
PostMethod postMethod = new PostMethod("https://api.douban.com/shuo/v2/statuses/");
Part[] parts = new Part[2];
parts[0] = new StringPart("source","XXXXXXXXX", "UTF-8");
parts[0] = new StringPart("text", "ttttt", "UTF-8");
File file = new File("D:\\upload.jpg");
FilePart filePart = new FilePart("image", file.getName(), file,new MimetypesFileTypeMap().getContentType(file), "UTF-8");
parts[1] = filePart;
MultipartRequestEntity requestEntity = new MultipartRequestEntity(parts, postMethod.getParams());
postMethod.setRequestEntity(requestEntity);
postMethod.setRequestHeader("Authorization", "Bearer XXXXXX");
int statusCode = client.executeMethod(postMethod);
String response = new String(postMethod.getResponseBody(), "UTF-8");
System.out.println("response--->" + response);
System.out.println("statusCode--->" + statusCode);
我用的是httpclient3.1,返回结果为{"msg":"不支持的图片格式","r":0}
怎么办?检查多次代码,尝试调整编码多次后,依旧,宣告失败,上豆瓣api小组上搜索,满眼尽是提问的,官方的回复也很简单:"我们的api没问题,请检查参数Content-Type"。
好吧我怕你了,既然你说你们的api没问题,我拿你们提供的sdk参考下总可以吧。于是 下载sdk,我x,老版本的。attachments方式的,不支持image参数。
灵光一显,没准豆瓣自己官方的android里可以用一定的借鉴意义,反编译之,上 应用汇下载豆瓣广播,使用 apk2java解压,jdgui反编译之。
发现android客户端里使用的是httpclient4。参数设置可我也没什么不同。