php - 如何用 python 重写这个 POST curl 脚本?

标签 php python post curl

我将用 python 重写这个 POST 请求:

<?php
// Set these variables
$networkid = ""; // In your HasOffers system at Support -> API
$apikey = ""; // In your HasOffers system at Support -> API
$offerid = "0"; // Specify an offer ID to add the creative to
$creativetype = "image banner"; // Types: file, image banner, flash banner, email creative, offer thumbnail, text ad, html ad, hidden
$filename = "banner_728x90.gif"; // File name; no spaces, and file must be in same directory as this script
$display = $filename; // Or change this to the "display name" for this creative

// Don't change anything below here
$creativetype = urlencode($creativetype);
$display = urlencode($display);
$fields[$filename] = "@{$filename}";
$url = "http://api.hasoffers.com/v3/OfferFile.json?Method=create&NetworkToken={$apikey}&NetworkId={$networkid}&data[offer_id]={$offerid}&data[type]={$creativetype}&data[display]={$display}&return_object=1";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$resp = curl_exec($ch);
curl_close($ch);

print_r(json_decode($resp, true)); // Final output; remove or change this if you want
?>

据我所知,在 pycurl 中,不存在 CURLOPT_POSTFIELDS 属性。我可以用什么来代替?

谢谢!

最佳答案

有很多可以使用的Python库:

http.client

https://docs.python.org/3.1/library/http.client.html

请求

https://pypi.python.org/pypi/requests/

命令非常简单:

使用http.client:

import http.client
conn = http.client.HTTPConnection("www.python.org")
conn.request("HEAD","/index.html")
res = conn.getresponse()
print(res.status, res.reason)
200 OK

或请求:

import requests
r = requests.get('https://github.com/timeline.json')
print r.json

使用 HTTP 客户端,可以按如下方式完成简单的 POST 请求:

connect = http.client.HTTPSConnection("base_url")
connect.request('POST', '/rest/api/'+ you_can_add_variables+ '/users?userEmail=' + another_variable, headers=headers)

使用请求:

import json
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
headers = {'content-type': 'application/json'}

r = requests.post(url, data=json.dumps(payload), headers=headers)

上面提供的文档应该不难理解

关于php - 如何用 python 重写这个 POST curl 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37383886/

相关文章:

php - 使用PHP将PDF另存为blob吗?

php - 如何获取prestashop中的所有属性

python - 使用 Psycopg2 的 Pandas DataFrame 到 PostgreSQL

api - 使用 httpotion elixir 发布到 slack api

php - laravel Controller 内部是否需要 try catch block ?

php - 选择带有数组的 MySQL 条目

python - 'MarkovGenerator' 对象没有属性 'together'

python - 如何使用cv2.VideoCapture接收Tello udp流

java - 如何将 @WebMvcTest 用于单元测试 POST 方法?

javascript - POST 数据不包含任何表单数据