Java: HTTP Post vytvořit nový „výrobek“ v Ruby on Rails aplikací

hlasů
4

Použití Apache HttpClient na android, jak mohu posílat data do restfull Ruby on Rails aplikace pomocí HttpPost.

To je můj Controller:

# POST /products
  def create

    @product = Product.new(params[:product])

    respond_to do |format|
      if @product.save
        flash[:notice] = 'Product was successfully created.'
        format.html { redirect_to(@product) }
        format.xml  { render :xml => @product, :status => :created, :location => @product }
      else
        format.html { render :action => new }
        format.xml  { render :xml => @product.errors, :status => :unprocessable_entity }
      end
    end
  end

A tohle je můj Java kód. Měl bych být předávání dat ve jménu URL, nebo mám nastavit to někde jinde? (Httpost.setEntity snad?) Nakonec jsem se budou používat JSON, ale já chci teď, aby si to, abych mohl skutečně volat metodu „Vytvořit“ v kolejích. Rails je stále POST, ale nikdy spustí libovolný kód v metodě „vytvořit“

  HttpClient httpclient = new DefaultHttpClient();

  HttpPost httppost = new HttpPost(http://192.168.0.100:3000/products/new);

  HttpResponse response = httpclient.execute(httppost);

Jsem docela přilepená a chtěl bych ocenit-li někdo mi mohl ukázat ve správném směru.

Položena 30/03/2009 v 05:00
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
3

Přidal jsem následující mou žádost POST a fungovalo to jako kouzlo.

httppost.addHeader("Content-Type","application/json");
Odpovězeno 02/04/2009 v 03:18
zdroj uživatelem

hlasů
1

Rails se neprovádí žádný kód v metodě Create, protože děláte požadavek na metodě „Nový“.

Typicky Nová metoda se používá k tomu, aby formulář HTML, že uživatel poté předloží způsobu vytvoření. Pro webové služby není potřeba tuto metodu.

Použijte adresu URL http://192.168.0.100:3000/products(bez / nové) místo. Ve výchozím nastavení lišty, směrovaly tuto žádost metody Create při pohledu na typ požadavku a viděl, že to je požadavek POST.

To předpokládá, že jste správně nastaven Produkty být RESTful zdroj do plánování trasy. V opačném případě budete muset použít http://192.168.0.100:3000/products/create. Zde je API doc k REST zdrojů a tras: http://api.rubyonrails.org/classes/ActionController/Resources.html

Odpovězeno 30/03/2009 v 05:04
zdroj uživatelem

hlasů
0

Chcete-li odeslat data v požadavku POST, je třeba volat httppost.setRequestBody(). Tato metoda má řadu NameValuePairsa s daty - naleznete v dokumentaci HTTP Client pro správnou syntaxi.

Odpovězeno 30/03/2009 v 07:23
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more