2012-02-22 44 views
0

我有一個WCF服務,我能夠發佈字符串,沒有問題,但現在我想發佈一個字節數組作爲一個字符串,這就是我在哪裏得到問題。我的目標是拍攝一張照片,將其轉換爲一個字節(),將其發送給WCF服務,並將WCF服務插入到我的數據庫中。我不確定是否我以這種錯誤的方式進行,但我無法找到將圖像保存到WCF的任何好解釋。Android的後字節數組(圖片)WCF寧靜服務

下面是httpposting了Android代碼:

 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:錯誤請求錯誤,所以我不確定它是否因爲字節太大或者情況可能如此。如果任何人都能指引我正確的方向,我會非常感謝任何幫助。謝謝。

回答

0

使用標準格式進行編碼,如Base64(常見於Web和移動應用程序)。然後,您可以a)在服務器端以二進制形式重新構建映像,或者b)將編碼後的字符串存儲在數據庫中並根據需要提供服務。答案取決於您的特定應用需求。

+0

感謝您的回覆。我嘗試使用.key(「byteImage」)。值(Base64.encode(imagedata,Base64.DEFAULT)),但它不保存整個字符串。它看起來只能保存字符串中前20個字符。 – bflosabre91 2012-02-22 22:34:53

+0

我沒有base64編碼在Android上,但它聽起來像它使用緩衝區大小隻有20個字節(給或帶)的流式機制。如果是這樣,找到一個編碼示例,允許您將整個圖像「流」到base64。 – 2012-02-22 22:38:13