当前位置: 首页 > 知识库问答 >
问题:

将JSON转换为guzzle php librairy请求

拓拔富
2023-03-14

我试图隐藏一个卷曲来吞咽请求,这里是卷曲请求。

curl https://{subdomain}.zendesk.com/api/v2/tickets.json \
  -d '{"ticket": {"subject": "My printer is on fire!", "comment": { "body": "The smoke is very colorful." }}}' \
  -H "Content-Type: application/json" -v -u {email_address}:{password} -X POST

以下是JSON部分:

{
    "ticket": {
        "requester": {
            "name": "The Customer",
            "email": "thecustomer@domain.com"
        },
        "subject": "My printer is on fire!",
        "comment": {
            "body": "The smoke is very colorful."
        }
    }
}
$client = new GuzzleHttp\Client();

$res = $client->post('https://midnetworkshelp.zendesk.com/api/v2/tickets/tickets.json', [

            'query' => [

                     'ticket' => ['subject' => 'My print is on Fire'], [ 

                     'comment' => [

                                'body' => 'The smoke is very colorful'] ],  'auth' =>  ['email', 'Password']]);

echo $res->getBody();

共有1个答案

华佐
2023-03-14

参考:

  1. http://curl.haxx.se/docs/manpage.html
  2. http://guzzle.readthedocs.org/en/latest/clients.html
  3. https://github.com/guzzle/log-subscriber
  4. http://guzzle.readthedocs.org/en/latest/clients.html#json

您最大的问题是您没有正确地转换curl请求。

    null
$client = new GuzzleHttp\Client([
        'base_url'      => ['https://{subdomain}.zendesk.com/api/{version}/', [
                'subdomain'     => '<some subdomain name>',
                'version'       => 'v2',
        ],
        'defaults'      => [
                'auth'  => [ $username, $password],
                'headers' => ['Content-Type' => 'application/json'],    //only if all requests will be with json
        ],
        'debug'         => true,                                        // only for debugging purposes
]);
  1. 确保向api发出的多个后续请求将具有身份验证信息。使您不必将其添加到每个请求中。
  2. 确保用此客户端发出的multipl后续(实际上是所有)请求将包含指定的标头。使您不必将其添加到每个请求中。
  3. 提供一定程度的将来校对(将子域和api版本移到可编辑字段中)。

如果选择记录请求和响应对象,还可以执行以下操作:

// You can use any PSR3 compliant logger in space of "null".
// Log the full request and response messages using echo() calls.
$client->getEmitter()->attach(new GuzzleHttp\Subscriber\Log\LogSubscriber(null, GuzzleHttp\Subscriber\Log\Formatter::DEBUG);

您的请求将简单地变成:

$json = '{"ticket": {"subject": "My printer is on fire!", "comment": { "body": "The smoke is very colorful." }}}';
$url = 'tickets/tickets.json';

$request = $client->createRequest('POST', $url, [
        'body' => $json,
]);
$response = $client->send($request);
$json = '{"ticket": {"subject": "My printer is on fire!", "comment": { "body": "The smoke is very colorful." }}}';
$url = 'tickets/tickets.json';

$result = $client->post(, [
        'body'  => $json,
]);

编辑:在进一步阅读参考文献4之后,应该可以做以下几点:

$url = 'tickets/tickets.json';
$client = new GuzzleHttp\Client([
    'base_url'      => ['https://{subdomain}.zendesk.com/api/{version}/', [
        'subdomain'     => '<some subdomain name>',
        'version'       => 'v2',
    ],
    'defaults'      => [
        'auth'  => [ $username, $password],
    ],
    'debug'         => true,                                        // only for debugging purposes
]);
$result = $client->post($url, [
    'json' => $json,            // Any PHP type that can be operated on by PHP’s json_encode() function.
]);
 类似资料:
  • 问题内容: 我想将Intent的Extras Bundle转换为JSONObject,以便可以将其传递给JavaScript。 有没有快速或最佳的方法来进行此转换?如果不是所有可能的捆绑包都能正常工作,那就没关系了。 问题答案: 您可以用来获取捆绑软件包含的密钥列表。然后,您可以遍历这些键,并将每个键值对添加到中: 请注意,这将需要您抓住一个。 编辑: 有人指出,以前的代码不能很好地处理和键入。如

  • 问题内容: 我正在将Jersey用于REST WS,并且得到的响应为JSON。 我想将此响应转换为POJO。怎么做 ? 问题答案: 要在Java和JSON之间进行转换,有很多可供选择的API 。 您可以“手动”遍历JSON组件并提取值以填充Java对象,或者可以使用JSON到Java的绑定API来解决许多低级映射问题。

  • 问题内容: 我试图将JSON输出转换为XML。不幸的是我得到这个错误: JSON根对象具有多个属性。根对象必须具有单个属性才能创建有效的XML文档。考虑指定DeserializeRootElementName。 这就是我到目前为止所创建的。 这是我的JSON输出: 我怎么解决这个问题? 问题答案: 尽管问题中提供的JSON并不完整,但您在顶层具有多个属性,如异常所示。您必须为其定义根以获取有效的X

  • 问题内容: 我似乎找不到此问题的答案。如何在JavaScript中将URL参数字符串转换为JSON?我的意思是问是否有像这样的内置功能或可以完成这项工作的单线? 例: => 问题答案: 您可以创建一个将返回JSON对象的方法 演示:http://jsfiddle.net/jAGN5/

  • 问题内容: 像这样转换JSON代码的最佳方法是什么: 在Java Map中,其中一个键为(field1,field2),而这些字段的值为(value1,value2)。 有任何想法吗?我应该使用Json-lib吗?或者,如果我编写自己的解析器会更好? 问题答案: 我希望您在开玩笑编写自己的解析器。:-) 对于这种简单的映射,http://json.org(java部分)中的大多数工具都可以使用。对

  • 问题内容: 我正在使用json-rpc-1.0.jar。以下是我的代码。由于响应为JSON,因此我需要将InputStream对象转换为JSON。 我确实验证了从Zappos API获得的json响应。是有效的。 我得到以下提到的异常: 问题答案: 利用Jackson JSON解析器。 推荐- 杰克逊之家 您唯一需要做的是- 现在将包含JSON。