데이터를 레일 서버로 내보내는 안드로이드 응용 프로그램이 있습니다. Rails 3을 사용하면 모든 것이 잘 작동합니다. 그러나 레일 4의 서버는 다음과 같은 매개 변수 내용 대신 나타납니다레일 4는 HTTP 게시물 내용을받지 못하지만 레일스 3에서 작동했습니다.
내용은 다음에서 보낸{"action"=>"export", "controller"=>"trainings"}
: 레일에 의해
HttpPost httpPost = new HttpPost(link);
String xmlFile = createXml(locationList);
StringEntity entity = new StringEntity(xmlFile, "UTF-8");
httpPost.setEntity(entity);
httpPost.addHeader("Content-Type", "application/xml");
httpClient.execute(httpPost);
그리고 받았습니다를 다음 코드로 :
begin
if !params[:training].nil? && !params[:training][:location].nil? && !params[:training][:datetime].nil?
locations = params[:training][:location]
if locations.count > 0
training = Training.create! created_at: Time.at((params[:training][:datetime].to_i/1000))
locations.each do |xml_location|
if !xml_location["latitude"].nil? && !xml_location["longitude"].nil?
Location.create! latitude: xml_location["latitude"], longitude: xml_location["longitude"], training_id: training.id
end
end
end
end
rescue TimeoutError => e
end
몸체의 예는 다음과 같습니다.
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<training>
<datetime>1409332572032</datetime>
<location>
<longitude>-122.084095</longitude>
<latitude>37.422005</latitude>
</location>
<location>
<longitude>-122.084095</longitude>
<latitude>47.422005000000006</latitude>
</location>
<location>
<longitude>-132.08409333333333</longitude>
<latitude>47.422005000000006</latitude>
</location>
<location>
<longitude>-142.08409333333333</longitude>
<latitude>47.422005000000006</latitude>
</location>
</training>
레일스 3에서 4 로의 변경 사항을 검색했지만이 동작이 변경 될 수있는 항목을 찾을 수 없습니다.
는 : 는 는 HTML 400 완료로 TrainingsController # 수출에 의해 2014년 8월 30일 14시 17분 32초 0200 처리에서 127.0.0.1에 대한 "/ 내보내기"를 POST 시작 잘못된 요청 0ms ActionController :: ParameterMissing (param이 누락되었거나 값이 비어 있습니다 : training) : app/controllers/trainings_controller.rb : 57 : training_params에 있습니다 app/controllers/trainings_controller.rb : 21 : in 'export ' – flp
POST 데이터가 어떤 모습인지 알 수 있습니까? 당신은 "훈련"매개 변수를 게시하지 않는 것 같습니다? – mask8
레일즈 3에서는 문제없이 작동하기 때문에 레일스가 http 포스트의 데이터를 삭제하는 것처럼 보입니다. 게시물 데이터는 { "action"=> "export", "controller"=> "trainingings"}이며 training_params가 params.permit 인 training_params.inspect로 가져 왔습니다. – flp