是不是这样:使用GET方法的时候,创建的uri字符串中直接带有所有参数。
使用POST方法的时候,创建的uri字符串只能包含API接口地址和?号,然后其他的参数,通过StreamWriter写入WebRequest中,然后调用GetResponse()方法获取返回数据。是这样的吗?

解决方案 »

  1.   

    访问的页面依赖于表单数据的用POST,否则一般用GET,需要用抓包工具看一下。
    POST的一个例子
      

  2.   

    就安全性 来说。get 安全性非常低,post 安全性较高; 其他lz自己好好研究吧! 我也在学习  呵呵呵。。 
      

  3.   

    既然你愿意自己控制客户端代码,给你简单描述一下http格式:在url参数方面,使用Get和Post是没有区别的,都是可以不带或者带参数,参数可以是多个。不论是Post还是Get,都可以有多个消息头。通常浏览器会提供一些消息头,例如user agent就是对于服务端非常重要的东西,它用来分析客户的设备状态,从而知道什么使用不同档次、特点的用户才喜欢访问什么功能。消息头中也还会有cookie等等。如果你自己控制客户端(而不是使用通用的浏览器,你当然可以自定义一些消息头。每一个消息头使用“名称: 值”这样的形式,以回车换行结束。假设是Get命令,没有消息体。而Post命令,需要在消息头中使用Length标记消息体的长度,然后在消息头结束之后额外地再增加一个回车换行,然后是消息体。作为一个通用的协议,当然还有很多设计。可以参考:http://www.google.com.hk/search?q=rfc1945+rfc2616&hl=zh-CN&newwindow=1&safe=strict&rlz=1I7GGLD_zh-CN&prmd=ivns&source=lnt&tbs=lr:lang_1zh-CN%7Clang_1zh-TW&lr=lang_zh-CN%7Clang_zh-TW&sa=X&ei=NadDTqvrGqnzmAWUpMWtCQ&ved=0CAcQpwUoAQ&biw=1363&bih=712退一步说,所谓http消息是普通的字符串,你可以使用一个telenet或者自定义的程序发送符合RFC2616规范的内容给服务器,服务器就可以给你服务并返回符合规范的结果了。
      

  4.   

    谢谢各位,非常感谢。
    我会细细去研究的。眼前有个问题就是:服务器提供了接口,第一个要求使用GET方法访问,我是用WebRequest,成功获取到了数据。
    第二个要求使用POST方法访问,那么我只需要简单的把WebRequest的Method改为POST就可以了吗?是否有什么地方需要注意或修改的呢?
      

  5.   

    使用Post,除了把Method改为POST之外,注意设置消息头中的contentlength参数,要等于你的消息体字节数,之后你使用ReqeustStream.Write方式发送消息体数据。这样才能保证服务器可以正常接收。从业务逻辑上说,你要搞懂服务器端的业务接口规范,否则假设消息头、消息体中被服务器检测出格式不符,可能它就给你一个莫名其妙的500、404之类的错误就完了,你就难以调试了。所以做客户端,一定要跟服务器端设计负责跟前端接口的技术人员多多沟通。
      

  6.   

    原来如此 谢谢大师,我只是简单的把GET该成了POST,所以一直错误,很多地方都检测了 都不知道错在那,好的, 我设置一下 在试试 谢谢