2013-05-30 8 views
6

मैं उनके API का उपयोग कर ImageShack करने के लिए एक तस्वीर अपलोड करने के लिए कोशिश कर रहा हूँ:आईओएस - ImageShack JSON एपीआई के साथ अपलोड चित्र

- (void)uploadImage2:(UIImage *)image 
{ 
    NSData *imageToUpload = UIImagePNGRepresentation(image); 

    if (imageToUpload) 
    { 
     NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; 
     [parameters setObject:@"XXXX" forKey:@"key"]; 
     [parameters setObject:@"json" forKey:@"format"]; 
     //[parameters setObject:@"application/json" forKey:@"Content-Type"]; 

     AFHTTPClient *client= [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"https://post.imageshack.us"]]; 

     NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"/upload_api.php" parameters:parameters constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) { 
      [formData appendPartWithFileData: imageToUpload name:@"image" fileName:@"logo.png" mimeType:@"image/png"]; 
     }]; 

     AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 

     [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) 
     { 
      NSDictionary *jsons = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil]; 
      NSLog(@"response: %@",jsons); 

     } 
             failure:^(AFHTTPRequestOperation *operation, NSError *error) 
     { 
      if([operation.response statusCode] == 403) 
      { 
       //NSLog(@"Upload Failed"); 
       return; 
      } 
      //NSLog(@"error: %@", [operation error]); 

     }]; 

     [operation start]; 
    } 
} 

एक प्रतिक्रिया के रूप में मैं प्राप्त त्रुटि संदेश कोई त्रुटि स्पष्टीकरण के साथ वापस:

{ 
    "error_code" = "upload_failed"; 
    "error_message" = "Upload failed"; 
    status = 0; 
} 

क्या कोई मुझे इसके साथ मदद कर सकता है? ऐसा करने का सही तरीका क्या है?

+0

क्या आपने 'एनएसएसटींग' के बजाय' NSData' भेजने का प्रयास किया था? –

+0

हाँ, मैंने वही त्रुटि प्रतिक्रिया प्राप्त की और – Oleg

+0

क्या आपने बहुत छोटी छवि के साथ प्रयास किया है?/यह सुनिश्चित करने के लिए कि यह एक टाइमआउट समस्या नहीं है –

उत्तर

3

ठीक है निर्धारित करते हैं, मैं अपने समस्या को हल करने में कामयाब रहे। सभी पैरामीटर को फॉर्म बॉडी में सेट करना होगा, अनुरोध मान के रूप में नहीं। यह काफी सरल दिखता है:

NSData *imageToUpload = UIImagePNGRepresentation([UIImage imageNamed:@"logo.png"]); 


    if (imageToUpload) 
    { 
     NSString *urlString = @"https://post.imageshack.us"; 

     AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:urlString]]; 
     NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload_api.php" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) { 
      [formData appendPartWithFileData:imageToUpload name:@"fileupload" fileName:@"image" mimeType:@"image/png"]; 
      [formData appendPartWithFormData:[@"XXXXXX" dataUsingEncoding:NSUTF8StringEncoding] name:@"key"]; 
      [formData appendPartWithFormData:[@"json" dataUsingEncoding:NSUTF8StringEncoding] name:@"format"]; 
     }]; 



     AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 

     [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) 
     { 
      NSDictionary *jsons = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil]; 
      NSLog(@"response: %@",jsons); 

     } 
             failure:^(AFHTTPRequestOperation *operation, NSError *error) 
     { 
      if([operation.response statusCode] == 403) 
      { 
       NSLog(@"Upload Failed"); 
       return; 
      } 
      NSLog(@"error: %@", [operation error]); 

     }]; 

     [httpClient enqueueHTTPRequestOperation:operation]; 
    }} 

आशा है कि इससे किसी की मदद मिलेगी!

2

इस प्रयास करें और हमें बताएं कि अगर यह काम करता है: एक छवि (बेसिक)

Endpoint : https://post.imageshack.us/upload_api.php Parameters : 
* key : The api key for your application; found in email sent after filling out our API Key Request form 
* fileupload : image file 
* format : json tags : a CSV list of tags to describe your picture public : A string setting your image to public or private where "yes" is public and "no" is private. Images are public by default. 

आप कुंजी अनुरोध का उपयोग करें और अपलोड प्रक्रिया के लिए अपनी खुद की कुंजी मिला अपलोड कर रहा है

 NSData *imageToUpload = UIImageJPEGRepresentation(uploadedImgView.image,1.0);//(uploadedImgView.image); 
     if (imageToUpload) 
     { 
     NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; 
     [parameters setObject:@"MY API KEY" forKey:@"key"]; 
     [parameters setObject:@"json" forKey:@"format"]; 

     AFHTTPClient *client= [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"https://post.imageshack.us"]]; 

     NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"/upload_api.php" parameters:parameters constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) { 
      [formData appendPartWithFileData: imageToUpload name:@"image" fileName:@"temp.jpeg" mimeType:@"image/jpeg"]; 
     }]; 

     AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 

     [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) 
     { 
      NSDictionary *jsons = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil]; 
      //NSLog(@"response: %@",jsons); 

     } 
             failure:^(AFHTTPRequestOperation *operation, NSError *error) 
     { 
      if([operation.response statusCode] == 403) 
      { 
       //NSLog(@"Upload Failed"); 
       return; 
      } 
      //NSLog(@"error: %@", [operation error]); 

     }]; 

     [operation start]; 
    } 
+0

अपलोड कर रहा हूं फिर भी त्रुटि – Oleg

+0

त्रुटि के साथ एक ही JSON प्रतिक्रिया यहां एक प्रश्न का एक लिंक है जो आपकी मदद कर सकता है: http://stackoverflow.com/questions/ 931088/http-post-to-imageshack –

1

?

Obtaining an API Key 
To obtain an API key, please use our API Key Request form. 

भी प्रारूप application/json

+0

हां, मैं कुंजी का उपयोग करता हूं। यह मुझे एक त्रुटि दिखाता है कि जब मैंने इसका उपयोग नहीं किया था, तो मुझे यह करना चाहिए, इसलिए मुझे यकीन है कि समस्या एपीआई कुंजी – Oleg

+0

से संबंधित नहीं है, आप उत्तर और परीक्षण में निर्दिष्ट प्रारूप निर्धारित करते हैं? –

+0

हाँ, मैंने किया, कोई भाग्य नहीं :-( – Oleg

संबंधित मुद्दे