服务器那边的请求的content-tpye是multipart/form-data,我要怎么发送数据去请求?用afnetworking

发布于 2022-08-28 00:56:12 字数 2313 浏览 22 评论 0

如题啊
该怎么弄?

之前用asi的时候是这样的

NSDictionary *sinaDBDictionary = [sinaDBArray objectAtIndex:0];
        NSString *accessTokenKey = [sinaDBDictionary objectForKey:@"AccessTokenKey"];
        NSString *wbUid = [sinaDBDictionary objectForKey:@"UserIDKey"];

        NSString *boundary = @"14745591349540787582088777204";


        //设置请求体中内容
        NSMutableString *bodyString = [NSMutableString string];
        [bodyString appendFormat:@"-----------------------------%@\r\n", boundary];
        [bodyString appendString:@"Content-Disposition: form-data; name=\"accessToken\"\r\n"];
        [bodyString appendString:@"\r\n"];
        [bodyString appendString:accessTokenKey];
        [bodyString appendString:@"\r\n"];
        [bodyString appendFormat:@"-----------------------------%@\r\n", boundary];
        [bodyString appendString:@"Content-Disposition: form-data; name=\"wbUid\"\r\n"];
        [bodyString appendString:@"\r\n"];
        [bodyString appendString:wbUid];
        [bodyString appendString:@"\r\n"];
        [bodyString appendFormat:@"-----------------------------%@--\r\n",boundary];

        NSMutableData *bodyData = [[NSMutableData alloc]initWithLength:0];
        NSData *bodyStringData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
        [bodyData appendData:bodyStringData];

        NSString *len = [NSString stringWithFormat:@"%d",[bodyData length]];

        NSString *s = [NSString stringWithFormat:@"multipart/form-data; boundary=---------------------------%@", boundary];


        NSString *url = @"屏蔽屏蔽屏蔽屏蔽掉";
        ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL: [NSURL URLWithString: url]];
        request.defaultResponseEncoding = NSUTF8StringEncoding;
        request.useCookiePersistence = YES;
        [request setRequestMethod:@"POST"];
        [request addRequestHeader:@"Content-Type" value:s];
        [request addRequestHeader:@"Content-Length" value:len];
        [request setPostBody:bodyData];
        [request startSynchronous];

        NSError *error = request.error;
        if (!error) {
           // NSLog(@"%@",[request responseString]);
        }else{
           // NSLog(@"%@",[[request error]localizedDescription]);
        }

真的是好复杂啊

然后现在要转为afn了 该怎么弄

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我早已燃尽 2022-09-04 00:56:12

自己写了个类目来设置request:

//
//  NSMutableURLRequest+FormData.m
//  Secrets
//
//  Created by ysq on 14-1-28.
//  Copyright (c) 2014年 ysq. All rights reserved.
//

#import "NSMutableURLRequest+FormData.h"

@implementation NSMutableURLRequest (FormData)



+(NSString *)boundaryData{
    return @"12436041281943726692693274280";
}
-(void)setFormData:(NSDictionary *)formData{

    NSString *boundary = [NSMutableURLRequest boundaryData];

    //设置请求体中内容
    NSMutableString *bodyString = [[NSMutableString alloc]init];


    for (int i=[[formData allKeys]count]-1; i>=0; i--) {

        NSString *key = [formData allKeys][i];
        NSString *value = [formData allValues][i];
        if ([key isEqualToString:@"accessToken"]) {
            value = [value substringToIndex:32];
        }

        [bodyString appendFormat:@"-----------------------------%@\r\nContent-Disposition: form-data; name=\"%@\"\r\n\r\n%@\r\n",boundary,key,value];
    }

    [bodyString appendFormat:@"-----------------------------%@--\r\n", boundary];


    NSMutableData *bodyData = [[NSMutableData alloc]initWithLength:0];
    NSData *bodyStringData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
    [bodyData appendData:bodyStringData];

    NSString *contentLength = [NSString stringWithFormat:@"%d",[bodyData length]];

    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=---------------------------%@", boundary];



    [self setValue:contentType forHTTPHeaderField:@"Content-Type"];
    [self setValue:contentLength forHTTPHeaderField:@"Content-Length"];
    [self setHTTPBody:bodyData];
    [self setHTTPMethod:@"POST"];

}



@end
你的心境我的脸 2022-09-04 00:56:12

AF 提供了form 请求的api

- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method
                                              URLString:(NSString*)URLString
                                             parameters:(NSDictionary*)parameters
                              constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文