как установить изображение и заголовки в multipart в objective c

#objective-c

#objective-c

Вопрос:

Я очень новичок в разработке ios, я хочу написать код для запроса post, в котором я хочу установить изображение и некоторые ключи и значения в multipart. в инструменте post man я попробовал этот запрос, код запроса в swift (NSURL) приведен ниже

    import Foundation

let headers = [
  "content-type": "multipart/form-data; boundary=---011000010111000001101001",
  "appointmentid": "6130",
  "createdat": "2016-10-07 14:10:47.10476130",
  "createdbyid": "000829",
  "filegroup": "image",
  "filelabel": "test",
  "filemimetype": "png",
  "filetype": "image/png",
  "patientid": "000829",
  "userid": "000829",
  "cache-control": "no-cache",
  "postman-token": "56b4e762-63ba-c1be-7d7a-67536c87a924"
]
let parameters = [
  [
    "name": "emrFile",
    "fileName": ["0": []]
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body  = "--(boundary)rn"
  body  = "Content-Disposition:form-data; name="(paramName)""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: NSUTF8StringEncoding, error: amp;error)
    if (error != nil) {
      println(error)
    }
    body  = "; filename="(filename)"rn"
    body  = "Content-Type: (contentType)rnrn"
    body  = fileContent!
  } else if let paramValue = param["value"] {
    body  = "rnrn(paramValue)"
  }
}

var request = NSMutableURLRequest(URL: NSURL(string: "https://uat.visirx.in:9443/VisiRx/UploadEmrFileServlet")!,
                                        cachePolicy: .UseProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.HTTPMethod = "POST"
request.allHTTPHeaderFields = headers
request.HTTPBody = postData

let session = NSURLSession.sharedSession()
let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    println(error)
  } else {
    let httpResponse = response as? NSHTTPURLResponse
    println(httpResponse)
  }
})

dataTask.resume()
  

используя это, я хочу написать код на objective c, а скриншот запроса post man добавлен ниже

введите описание изображения здесь

введите описание изображения здесь

я попробовал код в afnetworking 3.0

 data = UIImageJPEGRepresentation(selectedImage, 0.8);
    NSDictionary *params = @{@"createdAt"    :createdDate,
                             @"patientId"    :user.userId,
                             @"appointmentId":appointmentId,
                             @"createdById"  :user.userId,
                             @"fileGroup"    :@"image",
                             @"fileLabel"    :@"test",
                             @"fileMimeType" :@"png",
                             @"fileType"     :@"image/png",
                             @"userId"       :user.userId};

    NSMutableURLRequest *request =[[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"https://uat.app.in:9443/app/appServelet" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
                [formData appendPartWithFileData:data name:@"emrFile"fileName:@"test.png" mimeType:@"image/png"];

    } error:nil];
       //Authorization
        AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];


    NSURLSessionUploadTask *uploadTask;
    uploadTask = [manager
                  uploadTaskWithStreamedRequest:request
                  progress:^(NSProgress * _Nonnull uploadProgress) {
                      // This is not called back on the main queue.
                      // You are responsible for dispatching to the main queue for UI updates

                  }
                  completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
                      if (error) {
                          NSLog(@"Error: %@", error);
                      } else {
                          NSLog(@"%@ %@", response, responseObject);
                      }
                  }];

    [uploadTask resume];
  

ответ

 {
    responseHeader =     {
        responseCode = 0;
        responseMessage = "Invalid request.Please try later.";
    };
}
  

я не знаю, что я делаю неправильно, пожалуйста, кто-нибудь поможет мне в этом

заранее спасибо

Комментарии:

1. Попробуйте с AFJSONRequestSerializer вместо AFHTTPRequestSerializer в запросе