Necesito publicar en un recurso REST usando ruby rest-client
joya.
El ejemplo de solicitud HTTP es:
POST /somefolder HTTP/1.1
Authorization: Basic YWFhOmFw
Host: example.com
folder: creat
y proporciona un código de demostración escrito en php, y funciona bien:
<?php
$process = curl_init("example.com/somefolder");
curl_setopt($process, CURLOPT_POST, 1);
curl_setopt($process, CURLOPT_POSTFIELDS, "");
curl_setopt($process, CURLOPT_HTTPHEADER, array("folder: true"));
curl_setopt($process, CURLOPT_USERPWD, "username:password");
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);
print(curl_exec($process)."<br/>");
print(curl_getinfo($process, CURLINFO_HEADER_OUT)."<br/>");
curl_close($process);
?>
Mi código rubí es:
resource = RestClient::Resource.new("http://example.com/", :user => "username", :password => "password")
resource.post "somefolder", :folder => "true"
Pero vuelve 403 prohibido. Me gustaría saber dónde está mal mi rubí. Gracias.
Por cierto, ¿cómo puedo capturar el tráfico HTTP enviado por código ruby? Estoy usando MAC.
Respuestas
1 para la respuesta № 1No estoy familiarizado con Ruby, pero creo que hay dos problemas con su código. somefolder
Se envía como el contenido en lugar de la ruta y la carpeta folder
se está modificando Lo que creo que la solicitud de rubí se verá es esto.
POST / HTTP/1.1
Authorization: Basic YWFhOmFw
Host: example.com
X-Folder: true
somefolder
Mi lectura del documentación sugiero que cambiar a lo siguiente solucionará la ruta, pero no estoy seguro de si puede arreglar el nombre del encabezado del lado del cliente.
resource = RestClient::Resource.new("http://example.com/", :user => "username", :password => "password")
resource["somefolder"].post, :folder => "true"
Es posible que deba incluir una cadena vacía o un valor nulo para el contenido.
Utilizar Charles Proxy para ver las solicitudes HTTP.