Problem with JSON and iphone carrier wave

I have been struggling with this problem for more than a week!

I'm having trouble sending images from my iphone to the backend rails server with carrier configuration settings. Posting through a web form works very well, although publishing text from iphone via JSON also works.

Here is my photo controller:

class PhotosController < ApplicationController def new @photo = Photo.new(:user_id => params[:user_id]) end def create @photo = current_user.photos.build(params[:photo]) if @photo.save respond_to do |format| format.html { flash[:notice] = "Successfully created photo." redirect_to @photo.user } format.json { render :json => {:action => 'create', :owner => current_user} } end else render :action => 'new' end end 

and here is the objective-c code:

 UIImage *image = [UIImage imageNamed:@"moon.png"]; NSData *imageData = UIImagePNGRepresentation(image); NSString *urlString=[NSString stringWithFormat:@"http://127.0.0.1:3000/photos.json"]; // setting up the URL to post to // setting up the request object now NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; [request setURL:[NSURL URLWithString:urlString]]; [request setHTTPMethod:@"POST"]; NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; NSMutableData *body = [NSMutableData data]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile.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 stringWithFormat:@"\r\n--%@--\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); 

The answer I get from the server:

"EOFError (body of bad content)"

objective-c code was tested on the php server and the download was successful! so I think my problem is with my rails / carrierwave setting. please help me get bloody images from my iPhone and my rails server.

Your help is greatly appreciated.

+4
source share
1 answer

Why not try ASIHTTPRequest for POSTing?

It has many convenient methods for publishing multi-part data and works very well. Thus, you can probably eliminate the problems that may arise as a result of possible errors that occur when you try to manually create the request body ...

+2
source

Source: https://habr.com/ru/post/1343247/


All Articles