私は問題なく文字列を投稿できる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エラーが出ます。そのため、バイト・サイズが大きすぎるか、大文字と小文字が区別されるかどうかわかりません。誰かが私を正しい方向に向けることができれば、本当に助けに感謝します。ありがとう。
お返事ありがとうございます。 .key( "byteImage")。value(Base64.encode(imagedata、Base64.DEFAULT))を使用してみましたが、文字列全体を保存しません。文字列には最初の20文字しか保存されていないようです。 – bflosabre91
私はAndroidでbase64でエンコードされていませんが、バッファサイズでは20バイト(譲り受ける)のストリーミングタイプのメカニズムを使用しているようです。その場合は、画像全体をbase64に「ストリーム」するためのエンコード例を見つけてください。 –