【问题标题】:sending a body in a form of form-data以表单数据的形式发送正文
【发布时间】:2018-08-01 11:58:40
【问题描述】:

我有一个发布请求,我应该在请求中发送一个正文,但它应该是表单数据的形式: 数据现在位于 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

等等... 如果你有邮递员,你可以在那里看得更清楚, 知道如何转换吗? 谢谢

【问题讨论】:

    标签: ios objective-c post form-data


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      试试下面的答案,

       // 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
      

      这样,你可以在body中添加多个带值的参数。

      如果您想在邮递员中检查边界,请参见下图,

      在邮递员屏幕中,您可能看起来像这张图片。在右上角,有一个按钮“代码”点击那个按钮,你会得到一个如下图所示的弹出窗口。

      检查这里的边界值。

      【讨论】:

      • 什么是边界?我应该在哪里添加值?什么是 api 密钥?我是 usinf afnetworking 库
      • 您可以使用任何随机边界(一些预定义的边界)。你有没有详细检查过邮递员 API 调用?
      • 租用一次,我会分享详细信息
      猜你喜欢
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 2022-08-06
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 1970-01-01
      • 2021-01-07
      相关资源
      最近更新 更多