如何将音频,图像和字符串数据一起发布到ios7中的服务器上

时间:2014-09-24 13:57:30

标签: json web-services audio ios7 xcode5.1

NSMutableURLRequest *request= [[NSMutableURLRequest alloc] init];


/////// for image

NSString *filename = @"duck1.jpeg";

NSData *user_post_image = UIImageJPEGRepresentation([UIImage imageNamed:@"duck1.jpeg"], 0.5);

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

NSMutableData *postbody = [NSMutableData data];

[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"user_post_image\"; filename=\"%@.jpg\"\r\n", filename] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[NSData dataWithData:user_post_image]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];


////////// for original audio data

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


NSString * user_original_post_audiopath = [[NSBundle mainBundle] pathForResource:@"inputRecordedFile" ofType: @"wav"];

NSData *user_original_post_audio = [NSData dataWithContentsOfFile:user_original_post_audiopath];

[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"user_original_post_audio\"; filename=\"%@\"\r\n", user_original_post_audiopath] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[NSData dataWithData:user_original_post_audio]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];


////////// for user post audio data

// NSString * contentType2 = [NSString stringWithFormat:@“multipart / form-data; boundary =%@”,boundary];    // [请求addValue:contentType2 forHTTPHeaderField:@“Content-Type”];

NSString * user_post_audiopath = [[NSBundle mainBundle] pathForResource:@"convertedWavFile_DonaldDuck" ofType: @"wav"];

NSData *user_post_audio= [NSData dataWithContentsOfFile:user_post_audiopath];

[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"user_post_audio\"; filename=\"%@\"\r\n", user_original_post_audiopath] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[NSData dataWithData:user_post_audio]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];


//////// for string data

//Append userid
[postbody appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"user_id\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"%@\r\n", userID] dataUsingEncoding:NSUTF8StringEncoding]];


//Append post text
[postbody appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"post_text\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"%@\r\n", postStringText] dataUsingEncoding:NSUTF8StringEncoding]];

//Append filtername
[postbody appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"filter_name\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"%@\r\n", filterName] dataUsingEncoding:NSUTF8StringEncoding]];


[request setHTTPBody:postbody];

NSData *jsonData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

if (jsonData) {

    NSString *str = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    NSLog(@"str: %@", str);
    // Parse the retrieved JSON to an NSArray
    NSError* e;

    NSDictionary* JSON =
    [NSJSONSerialization JSONObjectWithData: jsonData
                                    options: NSJSONReadingMutableContainers error: &e];

    NSArray *jsonArray = [JSON allKeys];

    for (NSString *key in jsonArray) {
        NSLog(@"%@ : %@",key, [JSON objectForKey:key]);

    }
}

我想将2个音频文件,1个图像和3个字符串值发布到服务器,我们的服务器使用json请求 - 响应格式并请求将其作为多部分表单数据发送。所以我很困惑,我该如何实现它。我发送了简单的字符串数据但是并不清楚将图像和音频数据一起发送。 所以这里是代码,我试图发送所有这样的参数,但服务器响应我一些HTML文件文本。我没弄错。 Plz建议在这段代码中找出错误。

0 个答案:

没有答案