所以,我一遍又一遍地在網上搜索有關從iPhone應用程序發送POST與XML的任何事情 - 迄今沒有運氣,沒有!如何從iOS應用程序發送POST XML?
我在我的應用程序KissXML中使用,我發現它非常容易和有用,當談到獲取XML的響應 - 但相反地發送XML到服務器... 這裏是我的方法連接和接收XML。我試圖將僅包含我的XML請求的NSString放入POST請求的主體中,但它不能按計劃工作。
-(void)prepareTransaction{
NSLog(@"FXSecondVC: preparing transaction...");
NSString *login = [[NSUserDefaults standardUserDefaults] stringForKey:@"kUsername"];
NSString *password = [[NSUserDefaults standardUserDefaults] stringForKey:@"kPassword"];
NSString *host = [[NSUserDefaults standardUserDefaults] stringForKey:@"kURLServer"];
NSURL *url = [[NSURL alloc] initWithString:host];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
[httpClient setAuthorizationHeaderWithUsername:login password:password];
[httpClient registerHTTPOperationClass:[AFKissXMLRequestOperation class]];
NSString *xmlString = @"<RootEl xmlns=\"http://some.url/goes/here\">"
"<Element1>12678967.543233</Element1>"
"<Element2>"
"<string xmlns=\"bla.bla/url\">"
"String content</string>"
"<string xmlns=\"bla.bla/url\">"
"String content</string>"
"</Element2>"
"<Element3>true</Element3>"
"<Element4>String content</Element4>"
"<Element5>1999-05-31T11:20:00</Element5>"
"<Element6>true</Element6>"
"</RootEl>";
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:kServerRequestURL parameters:nil];
[request setHTTPBody:[xmlString dataUsingEncoding:NSUTF8StringEncoding]];
AFKissXMLRequestOperation *operation = [AFKissXMLRequestOperation XMLDocumentRequestOperationWithRequest:request success:^(NSURLRequest *req, NSHTTPURLResponse *resp, DDXMLDocument *XMLDocument){
NSLog(@"[SUCCESS]: XMLDocument: %@", XMLDocument);
}failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, DDXMLDocument *XMLDocument) {
NSLog(@"error parsing: %@", [error localizedDescription]);
}];
[operation start];
}
這是我收到的response
:
2012-11-21 19:40:09.884 FXApp[19662:707] FXSecondVC: preparing transaction...
2012-11-21 19:40:10.011 FXApp[19662:707] error parsing: Expected status code in (200-299), got 400
我失去了一些東西在這裏?我想使用KissXML,因爲它是最簡單的方法(至少我知道)在成功響應中使用已經準備好的XML文檔,但是如果解決方案需要更改框架 - 請不要猶豫。重點是讓它工作。 我擊中了死衚衕 - 這讓我瘋狂,尤其是它真的很緊急。
我會接受這個答案之前等待一段時間,因爲我上,這樣的地方讀取〜setValue方法:forHTTPHeaderField'是不是最好的一段路要走。仍在工作 – raistlin