[英]MultipartEntityBuilder HttpPost socket write error in java
[英]HttpPost returning error when using MultipartEntityBuilder in Android
我正在尝试查询“ http://www.idmypill.com/api/id/ ” api,我收到的JSON字符串是{"results":[],"success":false,"errors":null}
这是我的服务处理程序类:
public String makeServiceCall(String url, int method,
String api, byte[] pillImage)
{
try {
// http client
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpEntity httpEntity = null;
HttpResponse httpResponse = null;
// Checking http request method type
if (method == POST)
{
android.os.Debug.waitForDebugger();
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("data = api_key", api);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("files = image", pillImage);
entity = builder.build();
Log.d("Entity", entity.toString());
httpPost.setEntity(entity);
Log.d("post", httpPost.toString());
httpResponse = httpClient.execute(httpPost);
Log.d("params", httpResponse.getParams().toString());
}
httpEntity = httpResponse.getEntity();
response = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
网站提供的python示例为:
# highly suggested to use the requests package
# http://www.python-requests.org/en/latest/
import requests
# read in the image and construct the payload
image = open("example.jpg").read()
data = {"api_key": "KH8hdoai0wrjB0LyeA3EMu5n4icwyOQo"}
files = {"image": open("example.jpg")}
# fire off the request
r = requests.post("http://www.idmypill.com/api/id/",
data = data,
files = files)
# contents will be returned as a JSON string
print r.content
我的发布格式某种程度上肯定是错误的,或者他们是否特别想要.jpg图像而不是字节数组? 我对Python不熟悉,并且已经为这个问题苦苦挣扎了一个多星期,因此,我们将不胜感激。
尝试:
...
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("api_key", api);
builder.addPart("image", pillImage);
...
如果addPart
不能与字节数组一起使用(我正在工作,无法测试),则获取图像文件的名称并执行此操作绝对可以:
...
pillImage = "/path/to/the/image.jpg"; //This is the image file name
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("api_key", api);
File imageFile = new File(pillImage); //Open the image
builder.addPart("image", imageFile);
...
builder.addPart(“ file”,new FileBody(new File(filename)));
尝试此操作,而不只是在addPart中使用带有文件对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.