【问题标题】:How do we implement a curl post in pharo我们如何在pharo中实现curl post
【发布时间】:2018-03-09 13:24:07
【问题描述】:

我有 curl 帖子要在 pharo 中实现,但似乎没有太多关于如何做到这一点的解释。 我看到的例子很少,但它们比我需要的要简单得多。 我会做那个客栈pharos吗?

$ curl 'https://url_server' \
-X POST \
-H 'key: MY PASSWORD' \
-H 'Content-Type: application/json' \
-d \
'{
  "HEADER": "FOO",
  "DESK": "POO",
  "FORWARDTO": "another_url"
}'

我知道这与使用 Znclient 的帖子类似:

 ZnClient new
    url: 'url_server';
    entity: (ZnEntity 
            with:'{"HEADER": "FOO", 
                   "DESK": "POO",
                   "FORWARDTO": "another_url"}'
            type: ZnMimeType applicationJson
            );
        post.

但是,使用这种语法的关键在哪里?

【问题讨论】:

    标签: curl smalltalk pharo pharo-5


    【解决方案1】:

    您似乎正在寻找在 Zinc 中为您的请求设置 HTTP 标头字段的方法?

    试试ZnClient:

    headerAt: key put: value
        "Set key equals value in the HTTP header of the current request"
    

    您的代码可能如下所示:

    ZnClient new
        url: 'yourURL';
        headerAt: 'headerKey' put: 'headerValue'; 
        entity: (ZnEntity 
            with:'{"yourJSON": "Content"}'
            type: ZnMimeType applicationJson);
        post.
    

    Zinc 还有一个很好的特性,它可以向你展示一个相当于当前请求的 curl 命令行调用。因此,您可以与您想到的卷曲线进行比较。只需打印:

    ZnClient new
        url: 'yourURL';
        headerAt: 'headerKey' put: 'headerValue'; 
        entity: (ZnEntity 
            with:'{"yourJSON": "Content"}'
            type: ZnMimeType applicationJson);
        method: #POST;
        curl.
    

    您会在Enterprise Pharo book 中找到good documentation for using Zinc HTTP as client

    【讨论】:

    • 谢谢@MartinW。但我在这里使用 ZnClient。我的语法错了吗?我应该像为 url 一样添加键值吗?
    • ZincZnClient 所属框架的名称。因此 ZincZn 前缀 :)
    • 我用你的例子扩展了答案。
    • 谢谢@MartinW 这似乎更像我需要的。所以关键应该在 headerAt
    • 亲爱的@MartinW,最后一个问题。 post完成后如何检查服务器给出的Json响应?
    猜你喜欢
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多