Java 从android向wcf rest服务发布图像
我在向wcf rest服务发布图像时遇到问题。我发布了一些参数,其中一个是base64 utf-8编码字符串(图像) 我的问题是每次我发帖都会收到“糟糕的请求”。这是密码Java 从android向wcf rest服务发布图像,java,android,post,http-post,Java,Android,Post,Http Post,我在向wcf rest服务发布图像时遇到问题。我发布了一些参数,其中一个是base64 utf-8编码字符串(图像) 我的问题是每次我发帖都会收到“糟糕的请求”。这是密码 public String PostImage(Drawable img) throws Exception { HttpPost httpost = new HttpPost("http://10.0.2.2:1374/uploaditem"); JSONStringer json = JSONString
public String PostImage(Drawable img) throws Exception
{
HttpPost httpost = new HttpPost("http://10.0.2.2:1374/uploaditem");
JSONStringer json = JSONStringer()
.object()
.key("ipm")
.object()
.key("name").value("test")
.key("description").value("asfa")
.key("categoryid").value(1)
.key("data").value(ConvertImgToBase64Str(img))
.key("imagetype").value(2)
.key("tags").value("test;test")
.endObject()
.endObject();
StringEntity entity = new StringEntity(json.toString());
entity.setContentType("application/json;charset=UTF-8");//text/plain;charset=UTF-8
entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
httpost.setEntity(entity);
return ExcecutePostRequest(httpclient,httpost);
}
//Method to convert the image to base64encoded string
private String ConvertImgToBase64Str(Drawable img) {
Bitmap bitmap = ((BitmapDrawable)img).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bitmapdata = stream.toByteArray();
return Base64.encodeToString(bitmapdata, Base64.URL_SAFE);
}
这是编码字符串的问题,但是什么呢?我不明白为什么编码字符串会有问题 首先,尝试删除string对象中的data属性,看看是否会遇到同样的问题。通过这种方式,您可以消除由于编码错误而导致的可能性,并确保正确发出请求 其次,打印正在发送的http消息并进行格式检查。如果您有权访问服务器日志,请记录接收到的消息以及可能详细说明
错误请求的任何详细信息。我原以为如果WCF响应的请求不正确,它会向stderr打印一些东西,所以请先检查现有的日志
编辑
我不认为奇怪字符会有问题,因为base64编码中使用的字符不在ASCi范围之外
您应该检查正在发送的请求的大小。如果图像较大,则会得到一个较大的base64编码字符串,该字符串可能超过服务器post限制
如果您无法访问服务器日志,我认为这会澄清问题,如果是问题,您可以发送一个较小的图像来测试它 嗯。它的工作,如果我删除“数据”键或更改为一些随机文本。所以它和编码有关。我检查了编码字符串,无法使用任何奇怪的字符:/to尝试进行某种登录并运行,以便查看消息。请尝试检查作为web服务器或框架的一部分可用的任何现有日志。我本以为有什么东西被吐出来了。唉,这个要求太长了,为什么我以前没有想过呢?尝试了一个较小的图像,它的工作!我有这种情况,你能给我们看看你的WCF服务接口吗?