2015-10-18 18 views
0

看來我的帖子到達了主機,但是它的格式可能不正確?沒有作爲JSON進入?用HTTParty在Ruby中發佈JSON返回invalid_request

主機的結果呈現給我的錯誤代碼:INVALID_REQUEST 消息:驗證失敗的請求。

主機文件:

這意味着,自動排序沒有足夠的信息來 發生的順序。這幾乎總是會發生,因爲您尚未完全在您的自動訂購 部分填寫您的亞馬遜賬戶信息 部分。

我的錯誤結果包括以下內容:

{ 
    "_type": "error", 
    "_request_id": "5623dcc59ca1bb1e76000a9f", 
    "code": "invalid_request", 
    "message": "Validation failed on the request.", 
    "data": { 
    "validator_errors": [ 
     { 
     "path": "retailer_credentials.password", 
     "message": "'undefined' is not a permitted value for 'retailer_credentials.password' field." 
     }, 
     { 
     "path": "retailer_credentials.email", 
     "message": "'undefined' is not a permitted value for 'retailer_credentials.email' field." 
     }, 
     { 
     "path": "shipping_method", 
     "message": "'undefined' is not a permitted value for 'shipping_method' field." 
     }, 
     { 
     "path": "is_gift", 
     "message": "'undefined' is not a permitted value for 'is_gift' field." 
     }, 
     { 
     "path": "shipping_address.phone_number", 
     "message": "'undefined' is not a permitted value for 'shipping_address.phone_number' field." 
     }, 
     { 
     "path": "shipping_address.country", 
     "message": "'undefined' is not a permitted value for 'shipping_address.country' field." 
     }, 
     { 
     "path": "shipping_address.city", 
     "message": "'undefined' is not a permitted value for 'shipping_address.city' field." 
     }, 
     { 
     "path": "shipping_address.zip_code", 
     "message": "'undefined' is not a permitted value for 'shipping_address.zip_code' field." 
     }, 
     { 
     "path": "shipping_address.address_line1", 
     "message": "'undefined' is not a permitted value for 'shipping_address.address_line1' field." 
     }, 
     { 
     "path": "shipping_address.last_name", 
     "message": "'undefined' is not a permitted value for 'shipping_address.last_name' field." 
     }, 
     { 
     "path": "shipping_address.first_name", 
     "message": "'undefined' is not a permitted value for 'shipping_address.first_name' field." 
     }, 
     { 
     "path": "retailer", 
     "message": "'undefined' is not a permitted value for 'retailer' field." 
     }, 
     { 
     "path": "client_token", 
     "message": "'undefined' is not a permitted value for 'client_token' field." 
     }, 
     { 
     "value": [], 
     "path": "products", 
     "message": "'' is not a permitted value for 'products' field." 
     } 
    ] 
    }, 
    "host": "zincapi-1", 
    "offers_urls": [], 
    "screenshot_urls": [], 
    "_created_at": "2015-10-18T17:54:13.416Z" 
} 

我的代碼是在索引視圖:

<table> 
    <thead> 
    <tr> 
     <th>IF name</th> 
     <th colspan="3"></th> 
    </tr> 
    </thead> 

    <tbody> 
<% @ifs.each do |t| %> 

<!-- Update Each cur_count --> 

    <% 
    require 'json' 
    require 'HTTParty' 


    zincUrl = 'https://api.zinc.io/v0/order' 
    @ZincResult=HTTParty.post(zincUrl, 
    :body => [{ 
     :client_token => "XXXXXXXX", 
    :retailer => "amazon", 
    :products => [{"product_id" => ""+t.item+"", "quantity" => 1, 
    "seller_selection_criteria" => [ 
     { 
     "condition_in" => ["New"], 
     "international" => false, 
     "max_shipping_days" => 10 
     } 
    ] 
    }], 
    :max_price => 2000, 
    :shipping_address => { 
    "first_name" => "name", 
    "last_name" => "name", 
    "address_line1" => "address", 
    "address_line2" => "", 
    "zip_code" => "94133", 
    "city" => "San Francisco", 
    "state" => "CA", 
    "country" => "US", 
    "phone_number" => "number" 
    }, 
    :is_gift => true, 
    :gift_message => "present", 
    :shipping_method => "cheapest", 
    :payment_method => { 
    "name_on_card" => "name", 
    "number" => "XXXXXXXX", 
    "security_code" => "XXX", 
    "expiration_month" => "XX", 
    "expiration_year" => "XXXX", 
    "use_gift" => false 
    }, 
    :billing_address => { 
    "first_name" => "name", 
    "last_name" => "name", 
    "address_line1" => "address", 
    "address_line2" => "", 
    "zip_code" => "94133", 
    "city" => "San Francisco", 
    "state" => "CA", 
    "country" => "US", 
    "phone_number" => "XXXXXXXX" 
    }, 
    :retailer_credentials => { 
    "email" => "email", 
    "password" => "password" 
    }, 
    :webhooks => { 
    "order_placed" => "http://mywebsite.com/zinc/order_placed", 
    "order_failed" => "http://mywebsite.com/zinc/order_failed", 
    "tracking_obtained" => "http://mywebsite.com/zinc/tracking_obtained" 
    }, 
    :client_notes => { 
    "our_internal_order_id" => "Order_"+t.item+"", 
    } 
    }].to_json, 

    :headers => { 'Content-Type' => 'application/json' }) 

    %> 

    <%puts "end of Zinc if loop"%> 

    <%puts @ZincResult%> 

<tr> 
    <td><%= t.name %> </td> 
    <td><%= t.item %></td> 
    <td><%= t.key %></td> 
    <td><%= t.count %></td> 
    <td><%= t.cur_count %></td> 

    <td><%= link_to 'show', if_path(t) %></td> 

    <td><%= link_to 'edit', edit_if_path(t.id) %></td> 

    <td><%= link_to 'delete', ifs_delete_path(:id =>t.id)%></td> 

</tr> 
<% end %> 
</tbody> 
</table> 
+1

爲什麼要在視圖中進行API調用?這是你應該放棄API調用的最後一個地方。 – max

+0

你想在這裏做什麼? –

+0

@ThomasRoss和Max我試圖調用上述正文的'https://api.zinc.io/v0/order'API。我可以用Python來做,但現在試圖讓它在Ruby上工作。我現在把它放在控制器中作爲一種方法。但是,在調用方法時,我仍然遇到上述錯誤。非常感謝您接受我的評價,我一直對此持反對態度。 – RF4

回答

1

根據Zinc Docs你應該發送的JSON對象的身體,但你要發送json數組。要發送JSON對象,您應該使用大括號「{}」而不是方括號「[]」開始您的身體「

@ZincResult=HTTParty.post(zincUrl, 
    :body => {.........}.to_json, 
    :headers => { 'Content-Type' => 'application/json' })