【问题标题】:how to convert curl command line to pycurl code如何将 curl 命令行转换为 pycurl 代码
【发布时间】:2013-05-23 23:32:31
【问题描述】:

这是我的原始代码

import urllib, urllib2
from xml.dom import minidom

base_url = 'test.com:8000'
username = 'MyId'
password = 'passwd'
search_query = 'search error | head 10'

# Login and get the session key
request = urllib2.Request(base_url + '/servicesNS/MyId/search/auth/login', 
data = urllib.urlencode({'username': username, 'password': password}))

server_content = urllib2.urlopen(request)

session_key = minidom.parseString(server_content.read()).\
getElementsByTagName('sessionKey')[0].childNodes[0].nodeValue
print "Session Key: %s" % session_key 

# Perform a search
request = urllib2.Request(base_url + '/servicesNS/MyId/search/search/jobs/export', 
data = urllib.urlencode({'search': search_query,'output_mode': 'json'}),
headers = { 'Authorization': ('Splunk %s' %session_key)})
search_results = urllib2.urlopen(request)
print search_results.read()

它会导致 404 错误,所以我决定使用 Curl。

我有这个 curl 推荐

  curl -k -u myID:Passwd -d 'search="google.com | head 10"' -d "output_mode=json" https://test.com:8089/servicesNS/myId/search/search/jobs/export

我正在尝试使用 pycurl 调用 Joson。

如何将其转换为 pycurl?

提前谢谢你。

【问题讨论】:

  • 向我们展示您的代码 - 您尝试过哪些不起作用的方法?
  • 为什么你的base_url 不以'http://' 开头?而这两个请求中的哪一个是 404?
  • 你的 urllib2 代码和 curl 命令不匹配:不同的端口,不同的请求。 ElementTree 提供了更好的 xml api:session_key = etree.parse(server_content).findtext(".//sessionKey")
  • 您是否阅读过home page 上的pycurl 教程、示例和相关文档?如果是这样,你坚持哪一部分?如果没有……去阅读它,当你能回答上一个问题时再回来。

标签: python curl urllib2 pycurl


【解决方案1】:

将 curl 命令行转换为使用 libcurl(如 pycurl 或其他绑定)的任何内容的最佳方法是运行附加了“--libcurl output.c”的命令行,然后您检查创建的胚胎,然后显示 curl 必须做什么。

将 C 代码转换为 pycurl 代码通常很简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多