zoukankan      html  css  js  c++  java
  • python访问http的GET/POST

      版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址
    
      http://www.cnblogs.com/Colin-Cai/p/7562295.html 
    
      作者:窗户
    
      QQ:6679072
    
      E-mail:6679072@qq.com
    

      

       使用urllib和urllib2,可以轻松实现对http的访问。

       以下给个例子,实现对http://127.0.0.1/cgi/test的GET与POST

      使用的是平常意义上的query string

      POST接受json

           其中,

           urllib2的Request方法如果只带一个参数是GET方法,但如果带两个参数,则为http的POST方法,第二个参数为POST的内容。

    #!/usr/bin/env python
    
    import urllib
    import urllib2
    import json
    
    url_base = "http://127.0.0.1/cgi/test"
    
    #GET
    try:
        query = {'test':'yes','name':'colin'}
        query_string = urllib.urlencode(query)
        url = url_base+"?"+query_string
        print "GET", url
    print "web output:" print urllib2.urlopen(urllib2.Request(url)).read() except Exception as err: print err #post try: url = url_base print "POST", url a = {'k1':123, 'k2': '456', 'k3':'test'} json_s = json.dumps(a)
    print "POST input:" print json_s
    print "web output:" print urllib2.urlopen(urllib2.Request(url, json_s)).read() except Exception as err: print err

      

       test用bash编写,如下所示,其中jq是处理json的命令(不用了,sed可以搞定一切,就是难懂了一点而已),需要下载一下,bash/sed/awk应该都是系统自带

    #!/bin/bash
    echo -e 'Content-type:text/plain
    '
    echo -e '
    '
    
    if [ X"$REQUEST_METHOD" = X"POST" ];then
           #jq . | sed -nr '/:/!d; s/^([ 	]*"[^"]+"[ 	]*):/1=/;s/,[ 	]*$//;s/"//g;p'
          sed -nr 'H;${x;s/
    //g;s/[{}]//g;s/,/
    /g;s/"//g;s/[ 	]+//g;s/[ 	]*:[ 	]*/ = /g;p}'
    else
            echo ${QUERY_STRING} | awk 'BEGIN{RS="&"}1'
    fi
    

      随便用什么webserver都可以,只要支持CGI,我这里用是一个很轻量的webserver——boa,它可能不适合大型应用网站,但嵌入式里用CGI提供API还是很有用的,部署非常容易。

           搭建之后,测试一下

    $ ./test.py
    GET http://127.0.0.1/v1/lic/test?test=yes&name=colin
    web output:
    test=yes
    name=colin
    
    
    POST http://127.0.0.1/v1/lic/test
    POST input:
    {"k3": "test", "k2": "456", "k1": 123}
    web output:
      k3= test
      k2= 456
      k1= 123
  • 相关阅读:
    Android Studio 编译不通过,报错“找不到org.apache.http
    Android studio中出现非法字符时的部分解决方法
    eclipse项目导入到Android Studio Plugin with id 'android-library' not found
    将Eclipse代码导入到AndroidStudio的两种方式
    eclipse项目迁移到android studio(图文最新版)
    Android studio插件安装
    ViewPager PagerAdapter不更新视图
    Android:可扩展伸缩listview
    Android的崩溃错误报告之ACRA
    Android数据库ORMlite框架04
  • 原文地址:https://www.cnblogs.com/Colin-Cai/p/7562295.html
Copyright © 2011-2022 走看看