Android post byte byte(image)to WCF restful service

时间:2012-02-22 19:38:18

标签: c# java android wcf

我有一个WCF服务,我能够发布字符串没有问题,但现在我正在尝试将字节数组作为字符串发布,这是我遇到问题的地方。我的目标是拍照,将其转换为byte(),将其发送到WCF服务,WCF服务将插入到我的数据库中。我不确定我是否会以错误的方式行事,我找不到任何关于将图像保存到WCF的好解释。

以下是httpposting的安卓代码:

        HttpPost request = new HttpPost(SERVICE_URL + "/SaveAssmt");
        request.setHeader("Accept", "application/json");
        request.setHeader("Content-type", "application/json");

        JSONStringer assmt = new JSONStringer()
        .object()
            .key("data")
                .object()
                    .key("sFacID").value(res.get_sFacID())
                    .key("sResID").value(res.get_sResID())                   
                    .key("byteImage").value(new String(imagedata)) //imagedata is my byte() containing the image
                .endObject()
            .endObject();
        StringEntity entity = new StringEntity(assmt.toString());

        request.setEntity(entity);
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpResponse response = httpClient.execute(request);

以下是WCF部分:

<OperationContract()> _
<WebInvoke(Method:="POST", UriTemplate:="SaveAssmt", BodyStyle:=WebMessageBodyStyle.WrappedRequest, ResponseFormat:=WebMessageFormat.Json, RequestFormat:=WebMessageFormat.Json)> _
Sub SaveAssmt(data As AssmtResponses)

然后我的SaveAssmt方法只是插入数据库,只要我不传递imagedata就可以工作。一旦我通过imagedata,我得到一个400:错误的请求错误,所以我不确定它是否因为字节大小太大或者情况可能是什么。如果有人能指出我正确的方向,我真的很感激任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

使用标准格式进行编码,例如Base64(在Web和移动应用程序中很常见)。然后,您可以a)在服务器端将图像重建为二进制,或者b)将编码的字符串存储在数据库中并根据需要提供。答案取决于您的特定应用需求。