2016-04-13 2 views
0

Dieser POST-Anfrage mit Ajax funktioniert perfekt:POST-Anforderung an HTTPS mit Net :: HTTP

var token = "my_token"; 

function sendTextMessage(sender, text) { 
    $.post('https://graph.facebook.com/v2.6/me/messages?', 
    { recipient: {id: sender}, 
     message: {text:text}, 
     access_token: token 
    }, 
    function(returnedData){ 
     console.log(returnedData); 
    }); 
}; 

sendTextMessage("100688998246663", "Hello"); 

ich die gleiche Anforderung haben muß, aber in Ruby. Ich habe versucht, mit Net: HTTP, aber es funktioniert nicht, und ich habe nicht einen Fehler, damit ich es nicht debuggen kann:

token = "my_token" 
    url = "https://graph.facebook.com/v2.6/me/messages?" 
    sender = 100688998246663 
    text = "Hello" 
    request = { 
       recipient: {id: sender}, 
       message: {text: text}, 
       access_token: token 
       }.to_json 


    uri = URI.parse(url) 
    http = Net::HTTP.new(uri.host, uri.port) 
    http.use_ssl = true 
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

    request = Net::HTTP::Post.new(uri.request_uri) 

    response = http.request(request) 
    response.body 

Wie soll ich den Fehler gehen oder wo habe ich falsch gemacht ?

Antwort

2

Ihr request Hash wird durch Ihr request Objekt ersetzt, das Sie zuweisen Net::HTTP. Auch sicher sein Wunsch params in dem Körper Ihrer HTTP-Anforderung zu setzen:

require "active_support/all" 
require "net/http" 

token = "my_token" 
url = "https://graph.facebook.com/v2.6/me/messages?" 
sender = 100688998246663 
text = "Hello" 
request_params = { 
    recipient: {id: sender}, 
    message: {text: text}, 
    access_token: token 
} 

uri = URI.parse(url) 

response = Net::HTTP.new(uri.host, uri.port) 
http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

request = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' =>'application/json'}) 
request.body = request_params.to_json 

http.request(request) 

response = http.request(request) 

Sie können feststellen, folgenden Hinweis hilfreich: http://www.rubyinside.com/nethttp-cheat-sheet-2940.html

+0

Vielen Dank für Ihre Hilfe. Ich bekomme jedoch immer noch nichts. Ich habe keinen Fehler, und auf Facebook passiert nichts. –

+0

Warum haben Sie die .to_json entfernt? –

+0

Formularcodierung sollte intern mit 'Net :: HTTP' behandelt werden. –