我正在尝试使用Rest-client gem为我的应用程序执行一些小任务,这些任务使用Authlogic对用户进行身份验证.从Rest-Client的API,我看到可以发布登录过程所需的数据,如下所示:
require 'rest_client'
RestClient.post "http://127.0.0.1:3000/user_sessions", {:user_session => {:username => 'myusername', :password => 'mypassword'}}.to_json, :content_type => :json, :accept => :json
Run Code Online (Sandbox Code Playgroud)
查看我的开发日志,我看到该应用程序已登录我并将我正确地重定向到用户的私人页面.但是,当我试图"重新加载"私人页面时,
RestClient.get 'http://127.0.0.1:3000/users/1'
Run Code Online (Sandbox Code Playgroud)
我再次回到登录页面,好像我还没有登录.所以我想知道这是否与会话或cookie有关?
我已经使用cURL成功地重现了这个场景,我使用开关'-c cookie.txt'来保存我已登录的信息,并使用开关'-b cookie.txt'为每个调用告诉远程服务器关于我的身份验证.我可以理解这个概念,就像在主题公园或他们知道你支付的酒吧时手腕上的印章一样.但我发现RestClient中没有提到这种机制.任何帮助都可以解决这个问题.我也不介意尝试其他http客户端.
问候
我正在尝试使用rmagick和rest-client将水印图像发布到网址.当我生成合成图像时,我保存它(.write),用File.new读回来,然后发布该File对象.理想情况下,我想绕过写操作,因为我再也不需要这张照片了.有没有办法将Magick :: Image对象转换为File对象,以便我可以用rest-client发布它?
require 'rmagick'
require 'rest-client'
photo = Magick::Image.read('myphoto.jpg').first
water_mark = Magick::Image.read('watermark.png').first
result = photo.composite(water_mark, 0, 0, Magick::OverCompositeOp)
result.write('result.jpg')
file = File.new('result.jpg', 'rb')
RestClient.post("http://example.com", :source => file)
Run Code Online (Sandbox Code Playgroud) 我是CodeIgniter的新手.我正在使用Phil Sturgeon的RestServer和RestClient.我一直在尝试在我的CodeIgniter RestClient控制器中发出POST请求来更新我的CodeIgniter RestServer中的数据,但它永远不会更新我的数据库中的数据.我认为我的POST请求不对.
这是我在控制器中的RestClient POST请求:
$result = $this->rest->post('newscontroller/news/format/json',
array('news_id' => $news_id,
'news_title' => $news_title,
'news_category' => $news_category ),
'json');
if(isset($result->status) && $result->status == 'success')
{
$data['message'] ='News has been updated.';
$this->load->view('otherpageview',$data);
}
else
{
$data['message'] ='Something has gone wrong';
$this->load->view('otherpageview',$data);
}
Run Code Online (Sandbox Code Playgroud)
似乎$ result没有得到任何值,因为我确实回显$ result-> status并且它没有任何显示.而且我在这个控制器的构造函数中也有这个:
// Load the rest client spark
$this->load->spark('restclient/2.1.0');
// Load the library
$this->load->library('rest');
// Run some setup
$this->rest->initialize(array('server' => 'http://api.therestserver.com/index.php/'));
Run Code Online (Sandbox Code Playgroud)
而在RestServer的控制器(即newscontroller)中,有这样的方法:
function news_post()
{
$news=array(
'news_id' => $this->post('news_id'),
'news_title' …Run Code Online (Sandbox Code Playgroud) 我一直试图使用webmock来存储多部分请求并且没有找到令人满意的解决方案.
理想情况下,我想将请求存根如下:
stub_request(:post, 'http://test.api.com').with(:body => { :file1 => File.new('filepath1'), file2 => File.new('filepath2') })
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不起作用,RSpec抱怨请求没有被删除.打印非存根请求:
stub_request(:post, "http://test.api.com").
with(:body => "--785340\r\nContent-Disposition: form-data; name=\"file1\"; filename=\"filepath1\"\r\nContent-Type: text/plain\r\n\r\nhello\r\n--785340\r\nContent-Disposition: form-data; name=\"file2\"; filename=\"filepath2\"\r\nContent-Type: text/plain\r\n\r\nhello2\r\n--785340\r\n",
:headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'Content-Length'=>'664', 'Content-Type'=>'multipart/form-data; boundary=785340', 'User-Agent'=>'Ruby'}).
to_return(:status => 200, :body => "", :headers => {})
Run Code Online (Sandbox Code Playgroud)
当然,我不能真正遵循这个建议,因为边界是动态生成的.知道如何正确存根这些请求吗?
谢谢!布鲁诺
我正在尝试使用RestClient和mailgun发送邮件.
我在rails应用程序中安装了gem,并在config/application.rb中定义了"require'rest_client'".
然后发送邮件,我在我的消息控制器中写了这个:
RestClient.post "https://api:key-3ax6xnjp29jd6fds4gc373sgvjxteol0" "@api.mailgun.net/v2/samples.mailgun.org/messages", :from => "Excited User <me@samples.mailgun.org>", :to => "sergeyo@profista.com, serobnic@mail.ru", :subject => "Hello", :text => "Testing some Mailgun awesomness!"
Run Code Online (Sandbox Code Playgroud)
我已经使用mailgun创建了帐户,并使用了我帐户中提到的密钥和网址.
当我运行代码时,它会给出错误:
RestClient::ResourceNotFound (404 Resource Not Found):
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
我想发送GET-Requests,我的REST-API将回答这些请求.我的Java PROGRAMM目前支持text/plain,text/html,text/xml和application/json使用JAX-RS参考实现新泽西州.
要测试不同的媒体类型我正在使用firefox插件RESTClient.要更改媒体类型,我将使用name=Content-Type和例如调整标题value=text/xml.

但text/html无论Content-Type我选择哪种方式,RESTClient总会返回.现在修改返回结果类型的唯一方法是取消注释我的代码中的html-section.然后text/plain将是返回的媒体类型,但仍然Content-Type忽略RESTClient 的参数.
我正在使用RESTClient的最新版本,现在是2.0.3.你能帮我么?
这是我的Java代码:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
//Sets the path to base URL + /hello
@Path("/hello")
public class restProvider {
// This method is called if TEXT_PLAIN is request
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
return "Hello little World";
}
// This method is called if XML is request
@GET …Run Code Online (Sandbox Code Playgroud) 查看文档,没有任何关于如何发出POST请求的好例子.我需要使用auth_token参数发出POST请求并获得响应:
response = RestClient::Request.execute(method: :post,
url: 'http://api.example.com/starthere',
payload: '{"auth_token" : "my_token"}',
headers: {"Content-Type" => "text/plain"}
)
Run Code Online (Sandbox Code Playgroud)
400错误的请求错误:
RestClient::BadRequest: 400 Bad Request
from /Users/me/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rest-client-1.8.0/lib/restclient/abstract_response.rb:74:in `return!'
from /Users/me/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rest-client-1.8.0/lib/restclient/request.rb:495:in `process_result'
from /Users/me/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rest-client-1.8.0/lib/me/request.rb:421:in `block in transmit'
Run Code Online (Sandbox Code Playgroud)
如何使用RestClient发出POST请求的任何好例子?
编辑:
这是我在模型中提出请求的方式:
def start
response = RestClient::Request.execute(method: :post,
url: 'http://api.example.com/starthere',
payload: '{"auth_token" : "my_token"}',
headers: {"Content-Type" => "text/plain"}
)
puts response
end
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用rest-client lib 从Waze应用程序获取我的GPS数据.我基本上试图通过网站https://www.waze.com/伪造登录.登录后(您可以使用JohnDoeSpeedy228:gre @ tStory92)访问https://www.waze.com/editor/后,在查看网络调用后点击"驱动器",即可查看原始JSON数据.
我似乎已成功登录,但在发出请求返回所有驱动器的列表时,它返回以下内容
{"users"=>{"objects"=>[]}, "archives"=>{"totalSessions"=>0, "objects"=>[]}}
Run Code Online (Sandbox Code Playgroud)
它应该返回这样的东西:
{
"users":{
"objects":[
]
},
"archives":{
"totalSessions":1,
"objects":[
{
"id":<REDACTED>,
"userID":<REDACTED>,
"existingRoadMeters":2839,
"newRoadMeters":0,
"totalRoadMeters":2839,
"startTime":1456996197000,
"endTime":1456996636000,
"hasFullSession":true
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试的:
require 'rest-client'
require 'json'
GET_CSRF_URL = "https://www.waze.com/login/get"
SESSION_URL = "https://www.waze.com/login/create"
SESSION_LIST_URL = "https://www.waze.com/Descartes-live/app/Archive/List"
SESSON_DATA_URL = "https://www.waze.com/Descartes-live/app/Archive/Session"
AUTH = {'user_id'=>'JohnDoeSpeedy228','password'=>'gre@tStory92'}
req = RestClient.get(GET_CSRF_URL)
csrfhash = req.cookies
csrfhash['editor_env'] = 'row'
headers = {'X-CSRF-Token'=>csrfhash['_csrf_token']}
log = RestClient::Request.execute(
method: :post,
url: SESSION_URL,
cookies: csrfhash,
headers: headers,
payload: …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Ruby中为此页面中触发的API请求创建一个rest-client请求.(来源)
通过查看页面中的Javascript,我注意到有一个Javascript Blob被创建并且JSON内容被附加到那个,然后以多部分形式提交,并带有以下脚本 -
我尝试使用以下代码用ruby中的rest-client gem模拟这个 -
namespace :materialize do
task :connect => :environment do
base_uri = "https://imatsandbox.materialise.net/web-api/cartitems/register"
request = '{
"cartItems":[
{
"toolID":"d65e1eca-7adf-453d-a3bb-eb051fffb567",
"MyCartItemReference":"some reference",
"modelID":"62352bab-d490-410c-851d-bc62e056e82a",
"modelFileName":"",
"fileUnits":"mm",
"fileScaleFactor":"1",
"materialID":"035f4772-da8a-400b-8be4-2dd344b28ddb",
"finishID":"bba2bebb-8895-4049-aeb0-ab651cee2597",
"quantity":"1",
"xDimMm":"12",
"yDimMm":"159.94",
"zDimMm":"12",
"volumeCm3":"2.0",
"surfaceCm2":"100.0",
"iMatAPIPrice": "25.0",
"mySalesPrice": "26.0",
}
],
"currency":"EUR"
}'
File.open('request', 'wb') do |f|
f.write request
end
response = RestClient.post base_uri, {:data => request, headers: {:multipart => true, accept: :json}}
puts response.request
end
end
Run Code Online (Sandbox Code Playgroud)
我总是得到的反应机构 -
"{\"error\":{\"message\":\"Wrong request body. Check …Run Code Online (Sandbox Code Playgroud) 我有一个垫标签,显示客户结束日期。我最初对API进行GET请求时获得结束日期。假设结束日期是16-05-2099。我按原样显示结束日期。现在我有一个删除按钮,它可以进行软删除。这意味着它不会删除详细信息,只是将结束日期更改为当前日期,即今天的日期。
最初,我以如下方式显示我的详细信息:
<div *ngIf="showContact; else editableContact">
<div *ngFor="let element of sampleData1.contact">
<div *ngIf="contact.toString() === element.contactType" [attr.data-status]="element.contactStatus">
<br />
<mat-label hidden>Contact Id: {{ element.contactId }}</mat-label>
<mat-label>Contact Sub Type: {{ element.contactSubType }}</mat-label>
<br />
<mat-label>Contact Reference Type:{{ element.referenceNumber }} </mat-label>
<br />
<mat-label>Agreement Id : [</mat-label>
<mat-label *ngFor="let agreementIds of element.agreementId"> {{ agreementIds + ' ' }} </mat-label>
<mat-label>]</mat-label>
<br />
<mat-label>Contact Last Verified Date: {{ element.lastVerifiedDate | date: 'dd/MM/yyyy' }}</mat-label>
<br />
<mat-label>Contact End Date:{{ element.endDate | date: 'dd/MM/yyyy' }}</mat-label>
</div> …Run Code Online (Sandbox Code Playgroud)rest-client ×10
ruby ×4
rest ×3
angular ×1
authlogic ×1
codeigniter ×1
content-type ×1
html ×1
http-post ×1
javascript ×1
jersey ×1
mailgun ×1
media-type ×1
rmagick ×1
rspec ×1
sinatra ×1
typescript ×1
waze ×1
webmock ×1