带有xml的ASIHTTPRequest和ios上的多部分表单的图像

时间:2012-11-12 16:02:59

标签: iphone ios asihttprequest

我需要发布到期望xml数据和图像的Web服务器。 Post请求是一个多个表单。经过一些研究,似乎大多数人都在推荐ASIHTTPRequest。所以我已将此添加到我的项目中但仍无法与服务器通信。我得到一个401 error我认为当服务器没有得到预期的时候会返回。 (我知道错误处理不是最好的,但我必须继续)。所以我创建了我的ASIHTTPRequest对象并使用appendPostDataappendPostDataFromFile方法尝试发布xml和图像,但没有运气。

以下是一些代码:

    NSMutableData *temp = [[NSMutableData alloc]init];
    [temp appendData: [[NSString stringWithFormat: @"<MobileRequest>"] dataUsingEncoding: NSUTF8StringEncoding]];
    [temp appendData: [[NSString stringWithFormat: @"<userTokenId>%@</userTokenId>", @"myUserToken"] dataUsingEncoding: NSUTF8StringEncoding]];
    [temp appendData: [[NSString stringWithFormat: @"<applicationTokenId>%@</applicationTokenId>", @"myAppId"] dataUsingEncoding: NSUTF8StringEncoding]];
    [temp appendData: [[NSString stringWithFormat: @"<item>%@</item>", @"some item string"] dataUsingEncoding: NSUTF8StringEncoding]];
    [temp appendData: [[NSString stringWithFormat: @"<attachmentFileName>%@</attachmentFileName>", @"image.png"] dataUsingEncoding: NSUTF8StringEncoding]];
    [temp appendData: [[NSString stringWithFormat: @"</MobileRequest>"] dataUsingEncoding: NSUTF8StringEncoding]];

    NSOperationQueue *queue = [(AppDelegate *)[[UIApplication sharedApplication]delegate]operationQueue];


    NSURL *url = [NSURL URLWithString:@"http://myUrl/Request/"];

    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request addRequestHeader:@"Content-Type" value:@"text/xml"];

    [request appendPostData:temp];
    [request appendPostDataFromFile:imageUrlString];
    [request setPostBody:temp];

    [request setDelegate:self];
    [request setDidFinishSelector:@selector(requestDone:)];
    [request setDidFailSelector:@selector(requestWentWrong:)];
    [queue addOperation:request];

我在requestWentWrong收到回调,错误是401 Authorization required ......我认为这不是真正的问题。

任何人都可以指出有用的方向或告诉我我做错了什么吗?

任何想法都会非常感激。

0 个答案:

没有答案