2016-06-09 5 views
0

На самом деле у меня есть JSon параметруСообщение Изображение Использование MULTIPART Для URL

[dictionary setObject:_dateOfBirth.text forKey:@"birth_date"]; 
    [dictionary setObject:_tfCountry.text forKey:@"country"]; 
    [dictionary setObject:_tfEmail.text forKey:@"email"]; 
    [dictionary setObject:@"" forKey:@"fromLogin"]; 
    [dictionary setObject:@1 forKey:@"gender"]; 
    [dictionary setObject:@"signup" forKey:@"methodName"]; 
    [dictionary setObject:_tfContact.text forKey:@"mobile"]; 
    [dictionary setObject:_tfName.text forKey:@"name"]; 
    [dictionary setObject:_tfNickName.text forKey:@"nickname"]; 
    [dictionary setObject:_tfPassword.text forKey:@"password"]; 
    [dictionary setObject:_tfPinCode.text forKey:@"pincode"]; 

Там Есть также изображения, что я должен установить profile_pic как ключ. Теперь я преобразовал все Parameter как данные и Пост, что данные лежат этот

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:kNilOptions error:nil]; 

    // this is your service request url 

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://proteen2.inexture.com/webservice"]]; 

    // set the content as format 

    [request setHTTPMethod:@"POST"]; 

    [request setHTTPBody: jsonData]; 

    // this is your response type 

    [request setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"content-type"]; 

    NSError *err; 
    NSURLResponse *response; 

    // send the synchronous connection 

    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 

    // here add your server response NSJSONSerialization 

    NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err]; 

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

+0

check: http://stackoverflow.com/questions/8042360/nsdata-and-uploading-images-via-post-in-ios –

+0

Что такое Граница? если я конвертирую изображение в NSdata, как добавить эти данные в ссылку на этот параметр на конкретный ключ. Я смущен –

ответ

0

Вы должны управлять многими вещами здесь, как набор boundry данными Append изображения и т.д. и т.п.

Вы должны использовать AFNetworking сделать очень просто. Скачать с GitHub и просто перетащить библиотеку в ваш проект и импортировать AFNetworking.h в своем классе, а затем вы можете сделать что-то подобное,

NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer]multipartFormRequestWithMethod:@"POST" URLString:@"urlstring" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { 

    //Append image here for example; 

    UIImage *img = tempImageView.image; 
    NSData *imgData = UIImageJPEGRepresentation(img, 0.5); 

    [formData appendPartWithFileData:imgData name:@"imagename/serversideparameter" fileName:@"imagename" mimeType:@"image/jpeg"]; 


} error:nil]; 

//Send this request to server. Something like, 

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; 

AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:configuration]; 

[[manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 

    if (!error) { 

     NSLog(@"success!!"); 

     NSLog(@"here is the response : %@",responseObject); 
    } 
    else{ 

     NSLog(@"Error Occured : %@",error.localizedDescription); 
    } 

}]resume]; 

Вы не должны использовать NSUrlConnection, потому что она не рекомендуется в настоящее время. Лучше использовать NSUrlSession, который я использовал в ответ через AFNetworking.

Если вы не хотите использовать AFNetworking, обратитесь в службу поддержки this stackoverflow post. У этого есть большое объяснение шаг за шагом в ответе.