以表单数据形式发送正文

时间:2018-08-01 11:58:41

标签: ios objective-c post form-data

我有一个发布请求,如果我应该在请求中发送一个正文,但它应该采用form-data的形式: 数据现在位于nsmutable字典中,如下所示:

contacts (
    {
        Images =     (
            "http://otrackapi.omegasoftware.ca/ActStaff/public/uploads/user-image-94.jpg"
        );
        "company_name" = tttt;
        "contact_email" = "tttt@me.com";
        "contact_fname" = tttt;
        "contact_lname" = tttt;
        "contact_phone" = 1323223;
        lat = "37.330434";
        lng = "-122.030163";
        remark = Tttt;
        "type_id" = 18;
    }
)

它们应为如下形式的数据:

contants[0][contact_name]: bla
contacts[0][comtact_email]:blabla

等... 如果您有邮递员,您可以在那看到它更清晰, 知道如何转换吗? 谢谢

2 个答案:

答案 0 :(得分:0)

我建议,尝试使用Alomofire.try创建JSON并将其转换为base64string并将其发送给参数,并告诉后端人员对其进行解码,然后他们可以获取值。

答案 1 :(得分:0)

尝试下面的答案,

 // your url 
 NSString *urlString = @"http://www.somesite.com/public/api/v1/create

 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:urlString]];
    [request setHTTPMethod:@"POST"];

    NSMutableData *body = [NSMutableData data];

    NSString *boundary = @"---------------------------14737809831466499882746641449";
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
   [request addValue:contentType forHTTPHeaderField:@"Content-Type"];

现在可以添加参数

   // api key parameter: here parameter is 'api' its value is 1
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"api_key\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[@"1" dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];


    // here parameter is 'subject' and value is taken from '_subjectView.text'
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"subject\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[_subjectView.text dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];


    // close form
    [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

    // set request body
    [request setHTTPBody:body];

    // your rest code

这样,您可以在正文中添加多个具有值的参数。

如果要检查邮递员的边界,请参见下图,

enter image description here

在邮递员屏幕中,您可能看起来像此图像。在右上角,有一个按钮“代码”,单击该按钮,您将获得一个弹出窗口,如下图所示。

在此处检查边界值。

enter image description here