AFNetworking发送Get而不是POST

时间:2014-06-22 15:11:38

标签: ios iphone objective-c afnetworking

-(void)uploadUserImageWithUIImage:(UIImage *)image
{
    UIImage *imageTanya = [UIImage imageNamed:@"1.jpg"];
    AFHTTPRequestOperationManager *m = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"http://www.xxxxxxxx.com/yyyyyy/filesService.svc/"]];
    NSData *imageData = UIImageJPEGRepresentation(imageTanya, 0.5);
    AFHTTPRequestOperation *op = [m POST:@"UploadFile" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        //do not put image inside parameters dictionary as I did, but append it!
        [formData appendPartWithFileData:imageData name:@"1" fileName:@"1.jpg" mimeType:@"image/jpeg"];
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"Success: %@ ***** %@ **** %@", operation.responseString, responseObject, operation.request.URL.absoluteString);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@ ***** %@", operation.responseString, error);
    }];
    [op start];
}

发送请求POST时,它变为GET,因为AFNetworking在服务器重定向时发送了错误的路径方法已经变为get 错误的路径:“http://www.xxxxxxxx.com/UploadFile HTTP / 1.1” 当我创建一个新项目它工作正常但在我的项目中它给了我这个错误 -Xcode版本5.1 - AFNetworking 2.0

2 个答案:

答案 0 :(得分:0)

试试这个:

m POST:[NSString stringWithFormat:@"http://www.mohamedaspnet.com/Nazzelha/filesService.svc/%@", @"UploadFile"] ....

抱歉,我不知道问题是什么,如果您正在寻找POST到网址,但服务器会将其重定向到其他网址,例如,http://domain.com/abc ==&gt ; 301 ==&gt; http://domain.com/def,那么你期望的是POST http://domain.com/def实际上,你应该看看这个帖子AFNetworking: setRedirectResponseBlock inside my class NSURLResponse always return null value

  

根据相应委托方法的文档,   连接:willSendRequest:redirectResponse ::

     

委托可以在修改时收到此消息   发送之前的请求,例如转换请求的URL   它的规范形式。要检测此情况,请检查redirectResponse;   如果为零,则由于重定向而未发送消息。

答案 1 :(得分:0)

  1. 您的请求由Foundation URL加载系统处理,并非AFNetworking问题。

  2. 您应该删除此行,因为您调用的POST:…方法已经将操作排入队列:

    [op start];
    
  3. 检查服务器发送的重定向类型。如果它正在发送HTTP 303,RFC 2616要求将请求类型更改为GET。它应该是发送HTTP 307.请参阅3xx Redirection并确保您使用正确的状态代码。