繁体   English   中英

从Android将图像发布到WCF Rest服务

[英]Posting image to wcf rest service from android

我在将图像发布到我的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 = 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);
}

它与编码的字符串有关,但是呢?

我不明白为什么编码字符串应该有问题。

首先,尝试删除字符串对象中的data属性,看看是否遇到相同的问题。 这样,您就可以消除由于编码引起的可能性,并确保正确发出请求。

其次,打印正在发送的http消息并进行格式检查。 如果您有权访问服务器日志,则将接收到消息,并在Bad Request上详细说明所有详细信息。 我本以为WCF如果响应错误的请求将向stderr打印某些内容,因此请尝试先检查现有日志。

编辑

我认为奇怪的字符不会出现问题,因为base64编码中使用的字符不会超出ASCi范围。

您应该检查所发送请求的大小。 如果图像较大,则将获得较大的base64编码字符串,该字符串可能超出服务器发布限制。

如果无法访问服务器日志,我认为这将澄清该问题,那么可以通过发送较小的图像来对其进行测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM