python 中的 Http POST Curl

发布于 2024-12-11 01:07:02 字数 277 浏览 0 评论 0原文

我无法理解如何从 python 内部使用curl 发出 HTTP POST 请求。

我想发布到 Facebook 打开图表。这是他们给出的示例,我想在 python 中精确复制。

curl -F 'access_token=...' \
     -F 'message=Hello, Arjun. I like this new API.' \
     https://graph.facebook.com/arjun/feed

谁能帮助我理解这一点?

I'm having trouble understanding how to issue an HTTP POST request using curl from inside of python.

I'm tying to post to facebook open graph. Here is the example they give which I'd like to replicate exactly in python.

curl -F 'access_token=...' \
     -F 'message=Hello, Arjun. I like this new API.' \
     https://graph.facebook.com/arjun/feed

Can anyone help me understand this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

公布 2024-12-18 01:07:02

您可以使用 httplib 使用 Python 或更高级别的 POST urllib2

import urllib

params = {}

params['access_token'] = '*****'
params['message'] = 'Hello, Arjun. I like this new API.'

params = urllib.urlencode(params)
f = urllib.urlopen("https://graph.facebook.com/arjun/feed", params)
print f.read()

还有一个 Facebook 特定的 Python 高级库,可以为您完成所有 POST 操作。

https://github.com/pythonforfacebook/facebook-sdk/

https://github.com/facebook/python-sdk

You can use httplib to POST with Python or the higher level urllib2

import urllib

params = {}

params['access_token'] = '*****'
params['message'] = 'Hello, Arjun. I like this new API.'

params = urllib.urlencode(params)
f = urllib.urlopen("https://graph.facebook.com/arjun/feed", params)
print f.read()

There is also a Facebook specific higher level library for Python that does all the POST-ing for you.

https://github.com/pythonforfacebook/facebook-sdk/

https://github.com/facebook/python-sdk

孤芳又自赏 2024-12-18 01:07:02

你为什么首先使用curl?

Python 拥有丰富的 Facebook 库,并包含用于 Web 请求的库,调用另一个程序并接收输出是不必要的。

也就是说,

首先来自 Python 文档

data 可以是指定要发送到服务器的附加数据的字符串,
如果不需要此类数据,则为 None。目前 HTTP 请求是
仅那些使用数据的; HTTP 请求将是 POST 而不是
提供数据参数时获取
data 应该是一个缓冲区
标准 application/x-www-form-urlencoded 格式。这
urllib.urlencode() 函数采用 2 元组的映射或序列
并返回此格式的字符串。 urllib2 模块发送 HTTP/1.1
包含 Connection:close 标头的请求。

所以,

import urllib2, urllib
parameters = {}
parameters['token'] = 'sdfsdb23424'
parameters['message'] = 'Hello world'
target = 'http://www.target.net/work'

parameters = urllib.urlencode(parameters)
handler = urllib2.urlopen(target, parameters)
while True:
    if handler.code < 400:
        print 'done'
        # call your job
        break
    elif handler.code >= 400:
        print 'bad request or error'
        # failed
        break

Why do you use curl in the first place?

Python has extensive libraries for Facebook and included libraries for web requests, calling another program and receive output is unecessary.

That said,

First from Python Doc

data may be a string specifying additional data to send to the server,
or None if no such data is needed. Currently HTTP requests are the
only ones that use data; the HTTP request will be a POST instead of a
GET when the data parameter is provided
. data should be a buffer in
the standard application/x-www-form-urlencoded format. The
urllib.urlencode() function takes a mapping or sequence of 2-tuples
and returns a string in this format. urllib2 module sends HTTP/1.1
requests with Connection:close header included.

So,

import urllib2, urllib
parameters = {}
parameters['token'] = 'sdfsdb23424'
parameters['message'] = 'Hello world'
target = 'http://www.target.net/work'

parameters = urllib.urlencode(parameters)
handler = urllib2.urlopen(target, parameters)
while True:
    if handler.code < 400:
        print 'done'
        # call your job
        break
    elif handler.code >= 400:
        print 'bad request or error'
        # failed
        break
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文