1

私はこの質問を数回しましたが、まだ適切な答えが得られていません。私はこれを間違っているかもしれません。いくつかのテキスト パラメータと画像を含む 1 つの Http Post リクエストを送信したいと思います。iPhone の場合:

NSString reqstr = "param1=val1&param2=val2&..."
NSData *strData = [str DataUsingEncoding:NSUTF8StringEncoding]; //parameters
NSData *imageData = [NSData NSJPEGRepresenation(myImage.jpg,1)]; //image
NSMutableData *body = ...;
body.appendData = strData;
body.appendData = imageData;
req.setHttpBody = body;

WCF では:

void postData(Stream strm)
{
  //strm contains "param1=val1&param2=val2.....image raw binary here..........."
}

[DataContract]
class Employee { string param1,string param2, Stream photo..}
  • これは、そのようなオブジェクトを送信する正しい方法ですか? これはiphoneとWCFの間で一般的ではありませんか?
  • 特にバイナリデータから画像を形成するために、ストリーム内のバイトを解析してパラメーターを読み取るにはどうすればよいですか。注: 画像自体の場合は、その方法を知っています。他のパラメーターを使用してストリームから取得するにはどうすればよいですか?
4

1 に答える 1

0

WCF ではオプトインのシリアル化が必要なため、[DataContract] でクラスをタグ付けするだけでは、そのメンバーをシリアル化するには不十分です。シリアル化するメンバーには、[DataMember] でタグ付けする必要もあります。また、ストリーム自体を送信する理由はありません。代わりに、次のようなことができるはずです。

[DataContract]
class Employee
{
    [DataMember]
    string param1;

    [DataMember]
    string param2;

    [DataMember]
    JPEG image;
}

//Within your service, the postData contract will accept an Employee object from the caller // and perform some logic on it in the service.

void postData(Employee emp)
{
    //Do something with emp
}

ご不明な点がございましたら、またはこれが既に得たアドバイスと同じであるかどうかをお知らせください。

于 2012-07-03T19:30:04.183 に答える