Мне нужно загрузить список фотографий (может быть по одной) на сервер моего клиента из приложения iOS (iOS 4).Его сервер использует модуль Phusion Passenger 2.2.14 на Apache Server (Ubuntu) для развертывания своего приложения Ruby.
Вот код Ruby, который мой клиент использовал для загрузки фотографии с помощью клиента отдыха Ruby, и он работал дляодно изображение.Он отметил, что изображение должно быть в массиве, но поскольку здесь мы отправляем только одно изображение, оно сработало.
resource = RestClient::Resource.new 'http://serveraddress.com/id.json', :user => '********', :password => '*****'
resource.put :property => {:new_images => {:public => '0',:t_viewable => '0', :l_viewable => '0', :name => 'name3', :room => 'Bathroom', :attachment_type => 'periodic', :attached_file => File.new('/Users/me/Pictures/12618298.jpg','rb')} }
У меня вопрос: как мне кодировать эти данные с использованием коллекций Objective-C?Аутентификация работает нормально.
Вот код, который я использую, но он получает 500 Внутренняя ошибка сервера:
[request setPostValue:photoName forKey:@"property[new_images][0][name]"];
[request setPostValue:[NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970]] forKey:@"property[new_images][0][created_at]"];
[request setFile:photoPathFull withFileName:[self.localCaptions objectAtIndex:index] andContentType:@"image/jpeg"
forKey:@"property[new_images][0][attached_file]"];
[request setPostValue:self.room forKey:@"property[new_images][0][room]"];
[request setPostValue:imageCategory forKey:@"property[new_images][0][attachment_type]"];
[request setPostValue:public forKey:@"property[new_images][0][public]"];
[request setPostValue:tViewable forKey:@"property[new_images][0][t_viewable]"];
[request setPostValue:lViewable forKey:@"property[new_images][0][l_viewable]"];
* Обратите внимание, что переменная запроса является объектом ASIFormDataRequest.
Он также указал, что сервер ожидает следующие параметры:
property[new_images][1][name]=Sink
property[new_images][1][created_at]=<timestamp>
property[new_images][1][attached_file]=<filedata>
property[new_images][1][room]=Kitchen
property[new_images][1][attachment_type]=periodic
property[new_images][1][public]=0
property[new_images][1][t_viewable]=0
property[new_images][1][l_viewable]=0
Спасибо,
Я наконец-то получил доступ к журналу ошибок на стороне сервера, так что вот чтоэто выглядит так:
ActiveRecord :: UnknownAttributeError: неизвестный атрибут: 0
{"format"=>"json",
"property"=>
{"new_images"=>
{"0"=>
{"tenant_viewable"=>"0",
"name"=>"photo2011-10-01 08:43:07 +0000.jpg",
"landlord_viewable"=>"0",
"attached_file"=>"#<File:0xda0361c>",
"created_at"=>"1317459424.523741",
"attachment_type"=>"periodic_check",
"public"=>"0",
"room"=>"Kitchen"}}},
"action"=>"update",
"id"=>"866",
"controller"=>"properties"}
Свойства действия # update
URL http://server.com/000.json
Файл [GEM_ROOT] /gems/activerecord-2.2.2/lib/active_record/base.rb:2587
Теперь ясно, что атрибут 0 (после атрибута "new_images") не ожидаетсяс сервера.Похоже, это скорее позиция массива, чем атрибут.