如何将curl命令转换为urlfetch或一般请求?

时间:2017-11-24 12:40:07

标签: python google-app-engine curl https

我想从我的gae服务器向api发出https请求,例如使用urlfetch。 示例调用以curl命令的形式给出。

curl <URL> \
  -u <USER_KEY>: \
  -d "infoa=123" \
  -d "infob='ABC" \
  -d "token=<SOME_TOKEN>" \
  -d "description=Test"

我想知道的是,HTTPS请求会是什么样子,所以我可以使用this文档来复制它。可能是错误的,但是我已经使用了--trace-ascii -卷曲,但是从ouptut我仍然无法100%说出我发出的请求是什么样的。
他们转换为http请求的哪个方面?会不会像这样的工作:

result = urlfetch.fetch(
        url='<URL>',
        payload={user: <USER_KEY>, data: {infoa=123, infob=ABC, ...}},
        method=urlfetch.POST,
        headers=headers)

1 个答案:

答案 0 :(得分:0)

所以:-u for user进入授权头。基本加密是base64。 -d用于数据进入有效负载。不同的-d与简单的&符连接。

   try:
        headers = {'Content-Type': 'application/x-www-form-urlencoded',
                   "Authorization": "Basic %s" % base64.b64encode(<some_private_user_authentication>)} # base64 or similar needs to be imported
        result = urlfetch.fetch(
            url='<URL of endpoint>',
            payload='infoa={}&infob={}&description=Test Transaction'.format(info_a,                                                                                         info_b),
            method=urlfetch.POST,
            headers=headers)
        print repr(result.content) # do things..

    except urlfetch.Error:
        logging.exception('Caught exception fetching url')
        print 'Caught exception fetching url' # do other things..