当前位置: 首页 > 面试题库 >

带JSON正文的POST请求

祁博雅
2023-03-14
问题内容

我想通过PHP
在Blogger博客中添加帖子。Google提供了以下示例。如何在PHP中使用它?

您可以通过向带有帖子JSON正文的帖子集合URI发送POST请求来为博客添加帖子:

POST https://www.googleapis.com/blogger/v3/blogs/8070105920543249955/posts/
Authorization: /* OAuth 2.0 token here */
Content-Type: application/json

{
  "kind": "blogger#post",
  "blog": {
    "id": "8070105920543249955"
  },
  "title": "A new post",
  "content": "With <b>exciting</b> content..."
}

问题答案:

您需要使用cURL库发送此请求。

<?php
// Your ID and token
$blogID = '8070105920543249955';
$authToken = 'OAuth 2.0 token here';

// The data to send to the API
$postData = array(
    'kind' => 'blogger#post',
    'blog' => array('id' => $blogID),
    'title' => 'A new post',
    'content' => 'With <b>exciting</b> content...'
);

// Setup cURL
$ch = curl_init('https://www.googleapis.com/blogger/v3/blogs/'.$blogID.'/posts/');
curl_setopt_array($ch, array(
    CURLOPT_POST => TRUE,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_HTTPHEADER => array(
        'Authorization: '.$authToken,
        'Content-Type: application/json'
    ),
    CURLOPT_POSTFIELDS => json_encode($postData)
));

// Send the request
$response = curl_exec($ch);

// Check for errors
if($response === FALSE){
    die(curl_error($ch));
}

// Decode the response
$responseData = json_decode($response, TRUE);

// Print the date from the response
echo $responseData['published'];

如果由于某种原因您不想/不想使用cURL,可以这样做:

<?php
// Your ID and token
$blogID = '8070105920543249955';
$authToken = 'OAuth 2.0 token here';

// The data to send to the API
$postData = array(
    'kind' => 'blogger#post',
    'blog' => array('id' => $blogID),
    'title' => 'A new post',
    'content' => 'With <b>exciting</b> content...'
);

// Create the context for the request
$context = stream_context_create(array(
    'http' => array(
        // http://www.php.net/manual/en/context.http.php
        'method' => 'POST',
        'header' => "Authorization: {$authToken}\r\n".
            "Content-Type: application/json\r\n",
        'content' => json_encode($postData)
    )
));

// Send the request
$response = file_get_contents('https://www.googleapis.com/blogger/v3/blogs/'.$blogID.'/posts/', FALSE, $context);

// Check for errors
if($response === FALSE){
    die('Error');
}

// Decode the response
$responseData = json_decode($response, TRUE);

// Print the date from the response
echo $responseData['published'];


 类似资料:
  • 因此,我试图使用wiremck向带有请求正文的URL发出后请求,然后使用我的respons.json文件返回响应。(自定义响应) 我就是这样设置的,但我似乎找不到任何关于如何设置带有请求主体的post存根(包含数据,比如说尝试创建ID),然后检索自定义响应主体(从json文件创建ID响应)的信息。我该怎么设置呢。我尝试通过json文件请求生成id,然后尝试检索创建的id。 WithBodyFile

  • 问题内容: 我想仅使用本机Python库将JSON编码的数据发送到服务器。我喜欢请求,但我根本无法使用它,因为我无法在运行脚本的计算机上使用它。我需要没有它。 我的服务器是本地WAMP服务器。我总是得到一个 urllib.error.HTTPError:HTTP错误500:内部服务器错误 我 100%确信 这 不是 服务器问题,因为在同一台计算机上,同一台服务器上的同一数据,相同的url与请求库和

  • 问题内容: 我已经设置好OkHttpClient并成功将GET请求发送到服务器。而且,我还可以将带有空body标签的POST请求发送到服务器。 现在,我正在尝试将以下JSON对象发送到服务器。 为此,我尝试添加OkHttpClient库类,但无法将JSON对象作为http POST请求的主体发送。我尝试通过以下方式构建主体并处理发布请求。 通过POST请求将JSON对象发送到服务器的方式是什么。

  • 我试图在中发送格式的请求。 我尝试了很多来自internet和StackOverflow的代码,但都不起作用。

  • 我有一个用Jersey创建的API 当前有一个endpoint,用户可以向其发出POST请求。不需要正文,因为所有信息都在URL中。 创建一个新的空条目并返回id。请求的内容类型并不重要,因为没有请求正文数据。 现在也可以在请求期间使用FormData设置新条目的特定字段。对于此请求,需要一个正文,并且必须是。 所以我创建了第二个函数: 第二个函数的作用是发送请求中的参数。但如果添加它,第一个就会

  • 我试图从AWS API网关上的REST API调用POST方法。使用curl(用于POST)从命令行正确调用API,使用GET从浏览器正确调用API,因此我知道它工作正常,但我似乎找不到正确的方法使用ConnectionRequest类在codename one上调用POST方法,阅读文档theres addArgument()和setRequestBody(),他们说,它们是独占的,所以我尝试了