- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试发送帖子请求。
这是我的尝试:
-(void)Test{
NSDictionary * orderMasterDict = @{@"distributorId":@10000,
@"fieldUsersId": @3,
@"itemId":@0,@"orderMatserId":@56358 };
Globals.OrderDetailsArray = [NSMutableArray arrayWithObjects:orderDetailsDictAnatomy,orderDetailsDictTexture,orderDetailsDictTranslucency, nil];
NSData *postData = [NSJSONSerialization dataWithJSONObject:Globals.OrderDetailsArray options:NSJSONWritingPrettyPrinted error:nil];
NSData *postData2 = [NSJSONSerialization dataWithJSONObject:orderMasterDict options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString2 = [[NSString alloc] initWithData:postData2 encoding:NSUTF8StringEncoding];
NSString *jsonString = [[NSString alloc] initWithData:postData encoding:NSUTF8StringEncoding];
NSMutableDictionary* _params = [[NSMutableDictionary alloc] init];
[_params setObject:jsonString2 forKey:@"orderMaster"];
[_params setObject:jsonString forKey:@"orderDetails"];
[_params setObject:[NSString stringWithFormat:@"3"] forKey:@"userId"];
[_params setObject:[NSString stringWithFormat:@"ALRAISLABS"] forKey:@"subsCode"];
// the boundary string : a random string, that will not repeat in post data, to separate post data fields.
NSString *BoundaryConstant = @"----------V2ymHFg03ehbqgZCaKO6jy";
// string constant for the post parameter 'file'. My server uses this name: `file`. Your's may differ
NSString* FileParamConstant = @"imageUpload";
// the server url to which the image (or the media) is uploaded. Use your server url here
NSURL* requestURL = [NSURL URLWithString:@"http://192.168.0.102:8080/Demo/Test/create"];
// create request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setHTTPShouldHandleCookies:NO];
[request setTimeoutInterval:30];
[request setHTTPMethod:@"POST"];
// set Content-Type in HTTP header
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", BoundaryConstant];
[request setValue:contentType forHTTPHeaderField: @"Content-Type"];
// post body
NSMutableData *body = [NSMutableData data];
// add params (all params are strings)
for (NSString *param in _params) {
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", BoundaryConstant] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", param] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"%@\r\n", [_params objectForKey:param]] dataUsingEncoding:NSUTF8StringEncoding]];
}
// add image data
NSData *imageData = UIImageJPEGRepresentation(_uploadImageView.image, 0.6);
if (imageData) {
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", BoundaryConstant] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpg\"\r\n", FileParamConstant] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:imageData];
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
}
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", BoundaryConstant] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the reqeust
[request setHTTPBody:body];
// set the content-length
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[body length]];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
// set URL
[request setURL:requestURL];
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error){
NSLog(@"ERROR :",error);
}else{
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"response status code: %ld", (long)[httpResponse statusCode]);
if ([httpResponse statusCode] == 200) {
NSLog(@"StatusCode : %ld",(long)[httpResponse statusCode]);
}else{
NSLog(@"Error");
}
}
}] resume];}
如何发出 multipartFormData 请求? 我尝试用谷歌搜索,找不到任何适合这种情况的答案,并想了想。请帮助我找到正确的解决方案。提前致谢。
最佳答案
首先,您在 NSData
中更改图像,然后在 AFNetworking
的帮助下,您可以发布您的图像。
NSData *data = UIImagePNGRepresentation(yourImage);
imageData = [data base64EncodedStringWithOptions: NSDataBase64Encoding64CharacterLineLength];
然后使用此代码:
NSMutableDictionary *finaldictionary = [[NSMutableDictionary alloc] init];
[finaldictionary setObject:imageData forKey:@"image"];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST: [NSString stringWithFormat: @"%@%@", IQAPIClientBaseURL, kIQAPIImageUpload] parameters: finaldictionary constructingBodyWithBlock: ^(id<AFMultipartFormData> formData) { }
progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"Success response=%@", responseObject);
NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData: responseObject options: NSJSONReadingAllowFragments error: nil];
NSLog(@"%@", responseDict);
}
failure: ^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"Errorrrrrrr=%@", error.localizedDescription);
}
];
关于ios - 上传图片(MultipartFormData)请求objctiveC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42158191/
我有一个休息端点: @Consumes(MediaType.MULTIPART_FORM_DATA) @Path("/{test}/test") @POST public Response add(@
我在使用 Alamofire.upload multipartFormData 上传文件时遇到一些问题。我需要将多个文件上传到一个请求名称中。 例如我使用: var filesURLs = [file
我有一个接受 IFormFile 的 Controller 和一个使用表单数据的对象(一个名为 Document 的类)。 这是 Controller : [HttpPost] public asyn
我所做的只是: func postMultipart(_ url: URL, parameters: [String: Any]?, headers: [String: String]?, i
我正在尝试发送帖子请求。 这是我的尝试: -(void)Test{ NSDictionary * orderMasterDict = @{@"distributorId":@10000,
我正在尝试使用 Alamofire 上传图像,但服务器未获取图像。这是我上传的代码: Alamofire.upload(Router.UpdateUserAvatar, multipa
试图弄清楚这一点时遇到了困难。使用 Alamofire (4.4.0) 发布请求,我的 header 在大多数情况下都可以正常工作,但是这次我需要发送字符串字典和视频。 视频是通过 UIImagePi
我一直在尝试使用 Alamofire 实现多部分表单数据。我编写了一些代码,它非常适合执行时间低于 60 秒的请求。但是,如果请求花费的时间超过这个时间,它就会结束并且上传不会完成: 另外,我得到了这
如何使用 Alamofire 上传带有身份验证的 MultipartFormData?我不明白的部分是放在哪里 .authenticate(user: username, password: pass
我想用Alamo fire multipart form数据使用请求,比如我用upload API let profile = self.photoView.imageView?.image
我目前正在为 Play Framework 2.2.x 应用程序编写一些 Specs2 测试,该应用程序接受 MultipartFormData 提交作为其功能的一部分。 我已经使用以下形式成功地编写
我目前在上传带有参数和标题的图像时卡在我的学校项目中。问题是我不知道如何将 Bools 添加到 multipartFormData。有人知道吗? multipartFormData.appendBod
upload(.POST, isEdit == true ? mainURL+URLS.UpdateLicense.rawValue : mainURL+URLS.AddLicense.rawValu
我似乎在使用 Alamofire 上传图片和传递参数方面遇到了问题。我有一个非常简单的多部分数据函数,如下所示: sessionManager.upload(multipartFormData: {
我有以下代码。我想知道文件上传何时发生。我有一个像 200MB 这样的大文件。当第二行执行时它会在模型中吗? play.mvc.Http.MultipartFormData body = requ
我当前正在尝试使用 WSClient 使用以下代码将文件发布到端点 public Result uploadBankingFile(){ logger.info("Uploading file
Alamofire 4.0 的上传功能如何添加认证头? 下面是示例代码,但是我看不到向函数添加 header 的方法。 Alamofire.upload( multipartFormData:
我有这种形式的代码: func myFunction(, completionHandler: (ResponseType) -> Void) { mySessionManager.
我有一个使用以下方法的 Windows WEB API: public async Task SaveContract([FromBody] ModelDTO model) { string cu
这个问题已经有答案了: Alamofire 4 upload with parameters (2 个答案) 已关闭 4 年前。 目前我使用: func post(_ url: URL, parame
我是一名优秀的程序员,十分优秀!