标签: rest-client

Rest-client使用authlogic登录

我正在尝试使用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客户端.

问候

ruby authentication rest authlogic rest-client

5
推荐指数
1
解决办法
2073
查看次数

从Magick :: Image创建一个ruby File对象

我正在尝试使用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)

ruby rmagick rest-client

5
推荐指数
1
解决办法
2735
查看次数

如何向Phil Sturgeon的CodeIgniter RestServer发送POST请求

我是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)

rest codeigniter http-post rest-client

5
推荐指数
1
解决办法
1万
查看次数

使用webmock/rspec存储多部分请求

我一直试图使用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)

当然,我不能真正遵循这个建议,因为边界是动态生成的.知道如何正确存根这些请求吗?

谢谢!布鲁诺

ruby rspec sinatra rest-client webmock

5
推荐指数
1
解决办法
1897
查看次数

RestClient :: ResourceNotFound(找不到404资源):

我正在尝试使用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)

任何人都可以帮我解决这个问题吗?

rest-client ruby-on-rails-3.2 mailgun

5
推荐指数
1
解决办法
4951
查看次数

如何通过firefox插件RESTClient更改GET-Request的Content-Type

我想发送GET-Requests,我的REST-API将回答这些请求.我的Java PROGRAMM目前支持text/plain,text/html,text/xmlapplication/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)

rest content-type jersey media-type rest-client

5
推荐指数
1
解决办法
3万
查看次数

Rails RestClient POST请求失败并显示"400 Bad Request"

查看文档,没有任何关于如何发出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)

ruby-on-rails rest-client

5
推荐指数
1
解决办法
9225
查看次数

如何从休息客户端获取Waze的GPS数据?

我正在尝试使用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 rest-client waze

5
推荐指数
1
解决办法
645
查看次数

针对Javascript Blob的Ruby rest-client API请求

我正在尝试在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)

ruby-on-rails rest-client

5
推荐指数
1
解决办法
488
查看次数

如何在不刷新页面的情况下更改Mat-Label的内容

我有一个垫标签,显示客户结束日期。我最初对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)

html javascript rest-client typescript angular

5
推荐指数
1
解决办法
79
查看次数