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 回答