如何解码来自iPhone的WCF中的Post Request?

时间:2012-07-03 18:34:27

标签: wcf rest ios5 streaming datacontract

我几次问过这个问题,我还没有得到一个好的答案。可能是我做错了。我想发送一个包含一些文本参数和图像的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之间不常见吗?
  • 如何解析流中的字节以读取参数,尤其是从二进制数据中形成图像。注意如果它是自己的图像,我知道如何做到这一点。如何使用其他参数将其从流中取出?

1 个答案:

答案 0 :(得分:0)

WCF需要opt-In序列化,因此使用[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
}

如果您有任何问题或者您提供的建议更多,请与我们联系。