2012-02-22 8 views
0

私は問題なく文字列を投稿できるWCFサービスを持っていますが、今は文字列としてバイト配列を投稿しようとしています。問題を起こす私の目標は、写真を撮ってbyte()に変換し、それをWCFサービスに送り、WCFサービスが私のデータベースに挿入されることです。私は間違った方法でこれを行っているかどうかはわかりませんが、イメージをWCFに保存することについては説明がありません。ここでWCFの快適なサービスへのAndroidポストバイト配列(画像)

は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を渡すとすぐに、400:Bad Requestエラーが出ます。そのため、バイト・サイズが大きすぎるか、大文字と小文字が区別されるかどうかわかりません。誰かが私を正しい方向に向けることができれば、本当に助けに感謝します。ありがとう。

答えて

0

Base64のような標準フォーマットのエンコード(ウェブアプリケーションとモバイルアプリケーションで共通)。 a)a)サーバー側でイメージをバイナリとして再確認するか、またはb)エンコードされた文字列をデータベースに格納し、必要に応じて提供するかのいずれかです。答えは、特定のアプリケーションのニーズに依存します。

+0

お返事ありがとうございます。 .key( "byteImage")。value(Base64.encode(imagedata、Base64.DEFAULT))を使用してみましたが、文字列全体を保存しません。文字列には最初の20文字しか保存されていないようです。 – bflosabre91

+0

私はAndroidでbase64でエンコードされていませんが、バッファサイズでは20バイト(譲り受ける)のストリーミングタイプのメカニズムを使用しているようです。その場合は、画像全体をbase64に「ストリーム」するためのエンコード例を見つけてください。 –

関連する問題