【问题标题】:Attaching an image and posting to a JSON API附加图像并发布到 JSON API
【发布时间】:2012-05-19 06:28:40
【问题描述】:

如何使用图片创建帖子并将其作为 iPhone 应用的特色图片附加?

我正在使用带有JSON API plugin的wordpress

我创建帖子的网址:Reference to this

http://www.example.com/api/create_post/?nonce=eea4bb4ce5&status=publish&title=Test&content=test%20content&categories=animals

现在我需要将手机图库中的图片附加到此网址。我该怎么做?

【问题讨论】:

    标签: ios json wordpress


    【解决方案1】:

    试试这个。使用 JSON POST 方法。您可以像这样附加所有参数。

    -(void)uploadImage
    {
    
        NSString *method =  @"";
        NSString *username   = @"";
        NSString *token   = @"";
    
        NSString *urlString = [NSString stringWithFormat:@"%@",@"yoururl"];
    
        NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
        [request setURL:[NSURL URLWithString:urlString]];
        [request setHTTPMethod:@"POST"];
    
        NSMutableData *body = [NSMutableData data];
    
        // file
        NSData *imageData = UIImageJPEGRepresentation( imageView.image, 0.8);
        NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
        NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
        [request addValue:contentType forHTTPHeaderField: @"Content-Type"];
    
        [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"image\"; filename=\".jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[NSData dataWithData:imageData]];
        [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    
        //  parameter username
        [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"username\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[username dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    
        //  parameter token
        [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"auth_token\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[token dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    
        //    //  parameter method
        [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"method\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[method dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    
        // close form
        [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    
    
        // setting the body of the post to the reqeust
        [request setHTTPBody:body];
    
        // now lets make the connection to the web
        NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
        NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
    
        NSLog(@"%@",returnString);
        [returnString release];
    }
    

    希望对你有所帮助。

    【讨论】:

      【解决方案2】:

      要完全满足您的要求,您需要通过 POST 方法

      在网络服务上发送图像文件

      首先从照片库中选择图像或从相机中获取图像,然后使用以下代码制作该图像的数据。

         NSString *imgName = [NSString stringWithFormat:@"ImageTest"];
         NSData *imgData=UIImagePNGRepresentation(imgView.image);
      
         NSString* urlstring = [NSString stringWithFormat:@"http://www.example.com/api/create_post/?nonce=eea4bb4ce5&status=publish&title=Test&content=test%20content&categories=animals&imageFile=%@",imgName];
         NSLog(@"URL >> %@",urlstring);
      
         NSURL url = [NSURL URLWithString:[urlstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
      
          //===============================================        
          NSMutableURLRequest postRequest = [[[NSMutableURLRequest alloc] init] autorelease];
          [postRequest setURL:url];
          [postRequest setHTTPMethod:@"POST"];
      
          NSString boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
          NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
          [postRequest addValue:contentType forHTTPHeaderField: @"Content-Type"];
      
          NSMutableData  *body = [[NSMutableData alloc] init];
          [postRequest addValue:contentType forHTTPHeaderField: @"Content-Type"];
          [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
          [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
          [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
      

      imgName 这是代码中的非常重要的对象,它是您需要在您的网络服务中传递的图像,如上所示。

              [body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@.png\"\r\n",imgName]] dataUsingEncoding:NSUTF8StringEncoding]]; //img name
              [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
      
              // Add Image imgData is Declare as Above.
              [body appendData:[NSData dataWithData:imgData]];
      
      
      
          [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
          [postRequest setHTTPBody:body];
      
          NSURLResponse *response;
          NSError error = nil;
      
      
          NSData* data = [NSURLConnection sendSynchronousRequest:postRequest returningResponse:&response error:&error];
          NSString *result=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        //  NSString * jsonRes = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
      
      
          NSLog(@"result = %@",[result JSONValue]);
      

      它非常适合我!我希望你能从这里得到帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-23
        • 2013-01-15
        • 1970-01-01
        • 2012-08-01
        • 2013-06-04
        • 2013-05-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多