我想從iPhone應用程序發佈到我的WCF服務。我有應用程序發佈到服務,並試圖在服務合同數據的形式發送數據以XML象下面這樣:發佈到WCF服務發送空值
NSData *myPostData = [[NSString stringWithFormat:@"<AddMediaItem xmlns='http://www.example.com'><Item xmlns:a='http://www.example.com/MediaItem'><a:MediaType>iPhone</a:MediaType><a:Description>Description</a:Description><a:Name>Test</a:Name><a:ImageType>JPEG</a:ImageType></Item></AddMediaItem>"] dataUsingEncoding:NSUTF8StringEncoding];
NSMutableData *myMutablePostData = [NSMutableData dataWithData:myPostData];
[request setPostBody:myMutablePostData];
[request setRequestMethod:@"POST"];
[request addRequestHeader:@"Content-Type" value:@"application/xml"];
[request setDidFinishSelector:@selector(uploadFinished:)];
[request setDidFailSelector:@selector(uploadFailed:)];
[request setDelegate:self];
[request startAsynchronous];
出於測試目的,我設置我的服務來回報數據的合同,我發送到服務。然而,當它返回時,雖然從上面的代碼中我看到一些值是NULL,但我給它們賦值。
什麼也似乎很奇怪的是,Name
數據成員始終有一個值,但其他3我發送返回NULL或具有正確的值,基於它們在XML中發佈到服務中的順序。
下面是我的服務合同代碼:
[ServiceContract(Namespace = "http://www.example.com")]
public interface IImageDiaryService
{
[OperationContract]
[WebInvoke(UriTemplate = "AddMediaItem", Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
MediaItem AddMediaItem(MediaItem Item);
}
下面是我的代碼爲我MediaItem數據契約:
[DataContract(Namespace = "http://www.example.com/MediaItem")]
public class MediaItem
{
[DataMember]
public Int32 Id { get; set; }
[DataMember]
public String Name { get; set; }
[DataMember]
public String Description { get; set; }
[DataMember]
public String ImageData { get; set; }
[DataMember]
public String ImageType { get; set; }
[DataMember]
public String MediaType { get; set; }
}
做讓我知道如果你需要任何進一步的代碼。
任何幫助,非常感謝。
您是否嘗試過更改MediaItem不使用自動屬性(例如,將屬性存儲值設置並獲取到本地變量)。 – Oppositional 2011-05-16 22:47:37
你可以設置一個常規的勝利形式或控制檯應用程序,並嘗試一下。你會得到什麼結果?什麼是通過電線發送的數據,使用提琴手檢查出來。有可能你的反序列化不能正常工作。也許命名空間問題或XML問題。 – 2011-05-16 22:56:30
你在打什麼網址?應該是http://domain.com/AddMediaItem我認爲你的XML是錯誤的,因爲你試圖傳遞方法名稱,就好像它是一個SOAP消息。這不會反序列化成MediaItem類型。爲了驗證這一點,在AddMediaItem方法 – 2011-05-16 22:57:41