1. request方法:

提交评论到慕课网:

  1. var http = require('http');
  2. var querystring = require('querystring');
  3.  
  4. var postData = querystring.stringify({
  5. 'content': '很喜欢Scot老师的课程. 希望尽快学会nodejs!',
  6. 'cid': 348
  7. });
  8.  
  9. var options = {
  10. hostname: 'www.imooc.com',
  11. port: 80,
  12. path: '/course/docomment',
  13. method: 'POST',
  14. headers: {
  15. 'Accept':'application/json, text/javascript, */*; q=0.01',
  16. 'Accept-Encoding':'gzip, deflate',
  17. 'Accept-Language':'zh-CN,zh;q=0.8',
  18. 'Connection':'keep-alive',
  19. 'Content-Length':postData.length,
  20. 'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
  21. 'Cookie':'PHPSESSID=lvk77ha5lgp411jqbl2n9dovd0; imooc_uuid=94406a08-7461-473e-8676-a730e6d1f16a; imooc_isnew=1; imooc_isnew_ct=1501826723; loginstate=1; apsid=E0M2ExNjBmNWQwN2Q0MDc0YzhhZWUwMmY4MTg3NmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTM1NTg1NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4X2RhY2hlbmdAMTI2LmNvbQAAAAAAAAAAAAAAAAAAAGY3YzYwNzdjYjlmMjBkYTA0OWI0OWE3ZjhiZDgxMzEz6Q6EWekOhFk%3DNm; last_login_username=x_dacheng%40126.com; Hm_lvt_f0cfcccd7b1393990c78efdeebff3968=1501826670; Hm_lpvt_f0cfcccd7b1393990c78efdeebff3968=1501826738; IMCDNS=0; cvde=59840ea3a723c-7',
  22. 'Host':'www.imooc.com',
  23. 'Origin':'http://www.imooc.com',
  24. 'Referer':'http://www.imooc.com/comment/348',
  25. 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36',
  26. 'X-Requested-With':'XMLHttpRequest'
  27. }
  28. };
  29.  
  30. //发送请求:
  31. var req = http.request(options, function(res){
  32.  
  33. console.log('status: ' + res.statusCode);
  34. console.log('headers: ' + JSON.stringify(res.headers));
  35.  
  36. res.on('data', function(chunk){
  37. console.log(Buffer.isBuffer(chunk));
  38. console.log(typeof chunk);
  39. });
  40.  
  41. res.on('end', function(){
  42. console.log('评论完毕!');
  43. });
  44. });
  45.  
  46. req.on('error', function(e){
  47. console.log('Error: ' + e.message);
  48. });
  49.  
  50. //写入请求数据:
  51. req.write(postData);
  52.  
  53. //结束请求:必须写的:
  54. req.end();

注意:

  第56行的代码:   req.end(); 必须写.

------------------

2. get() 方法.

get方法是 对 request方法的封装,    get方法 自带 req.end()

nodejs 请求端: get.js

  1. var http = require('http');
  2. var querystring = require('querystring');
  3.  
  4. var postData = {
  5. 'name': '小明',
  6. 'age': 26
  7. };
  8.  
  9. var postDataStr = querystring.stringify(postData);
  10.  
  11. http.get('http://www.a.com/response.php?'+postDataStr, function(res){
  12. console.log('status: ' + res.statusCode);
  13. console.log('headers: ' + JSON.stringify(res.headers));
  14. var txt = '';
  15. res.on('data', function(chunk){
  16. // console.log(Buffer.isBuffer(chunk));
  17. // console.log(typeof chunk);
  18.  
  19. txt += chunk;
  20. });
  21.  
  22. res.on('end', function(){
  23. console.log(typeof txt);
  24. console.log(txt);
  25.  
  26. 29 console.log(typeof JSON.parse(txt));
  27. 30 console.log(JSON.parse(txt));
  28. 31 console.log(JSON.parse(txt).name);
  29. 32 console.log(querystring.unescape(JSON.parse(txt).name));
  30. });
  31. }).on('error', function(e){
  32. console.log('Error: '+e.message);
  33. });

PHP接收端: response.php

  1. <?php
  2.  
  3. $name = $_GET["name"] . '--返回数据';
  4. $age = $_GET['age'] + 100;
  5.  
  6. echo json_encode(array(
  7. 'name' => $name,
  8. 'age' => $age,
  9. 'address' => 'beijing'
  10. ));
  11.  
  12. ?>

运行:

 注意:

  •   返回的数据 是 json格式的字符串 ,因此要使用 JSON.parse() 转化为json对象.

  

参考链接:

nodejs -- http模块. request() 方法 , get方法.的更多相关文章

  1. Node.js process 模块常用属性和方法

    Node.js是常用的Javascript运行环境,本文和大家发分享的主要是Node.js中process 模块的常用属性和方法,希望通过本文的分享,对大家学习Node.js http://www.m ...

  2. python3 中mlpy模块安装 出现 failed with error code 1的决绝办法(其他模块也可用本方法)

    在python3 中安装其它模块时经常出现 failed with error code 1等状况,使的安装无法进行.而解决这个问题又非常麻烦. 接下来以mlpy为例,介绍一种解决此类安装问题的办法. ...

  3. Node.js -- Router模块中有一个param方法

    这段时间一直有在看Express框架的API,最近刚看到Router,以下是我认为需要注意的地方: Router模块中有一个param方法,刚开始看得有点模糊,官网大概是这么描述的: 1 Map lo ...

  4. request对象多种方法封装表单数据

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...

  5. Struts2获取request三种方法

    Struts2获取request三种方法   struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象. 在Actio ...

  6. python之序列化模块、双下方法(dict call new del len eq hash)和单例模式

    摘要:__new__ __del__ __call__ __len__ __eq__ __hash__ import json 序列化模块 import pickle 序列化模块 补充: 现在我们都应 ...

  7. request对象的方法及其参数的传递

    先设计一个简单的登录界面index.htm: <html><head><title>request的使用</title></head>< ...

  8. python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性

    python inspect 模块 和 types 模块 判断是否是方法,模块,函数等内置特殊属性 inspect import inspect def fun(): pass inspect.ism ...

  9. os、os.path模块(文件/目录方法)

    1.模块的概念:模块是一个包含所有定义的变量.函数的文件,模块可以被其余模块调用. 2.利用OS模块实现对系统文件的. os模块中常见的方法: gercwd()     返回当前工作目录 chdir( ...

随机推荐

  1. ACM总结——2017ACM-ICPC北京赛区现场赛总结

    现在距离比赛结束已经过了一个多星期了,也是终于有时间写下心得了.回来就是被压着做项目,也是够够的. 这次比赛一样是我和两个学弟(虽然是学弟,但我的实力才是最弱的T_T)一起参加的,成绩的话打铁,算是情 ...

  2. Html br 标签

    Html br 标签 <html> <body> <!-- br标签:跳到下一行--> <p>内<br />容</p> 注:br ...

  3. CSS 页面布局、后台管理示例

    CSS 页面布局.后台管理示例 页面布局 1.头部菜单 2.中间内容/中间左侧菜单 3.底部内容 <div class='pg-header'> <div style='width: ...

  4. Linux操作oracle——关闭、停止、重启

    基础命令: 在此之前,先介绍一下切换到oracle用户的命令 su - oracle (注意空格) 一.启动监听.启动数据库1.1启动监听1.切换到oracle用户下 2.启动监听: lsnrctl ...

  5. PTA编程总结1—打印沙漏

    题目:7-1 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓&q ...

  6. 【Git】git error记录之 "unpacking the sent packfile failed on the remote"

    错误信息: error: cannot open .git/FETCH_HEAD: Permission denied unpacking the sent packfile failed on th ...

  7. Learning-Python【21】:Python常用模块(4)—— re、logging、hashlib、subprocess

    re 模块:与正则相关的模块 在使用 re 模块之前,需要先了解正则表达式(regular expression),描述了一种字符串匹配的模式(pattern),可以用来检查一个字符串是否含有某个子字 ...

  8. Docker镜像Push到DockerHub

    1.自己整理的容器首先通过commit做成本地镜像 docker commit -a "Cristin" -m "测试开发平台Jenkins" 281eef85 ...

  9. js中实现截取数组的后几个元素作为一个新数组的方法

    有时候我们会遇到这种需求,截取数组中后5个元素作为一个新数组,且顺序不能变.数组中的slice()方法和splice()方法都可以实现这样的操作. const arr = [1,2,7,2,6,0,3 ...

  10. 第 8 章 容器网络 - 069 - Calico 的默认连通性

    相同calico 网络之间的连通性 测试一下 bbox1 与 bbox2 的连通性: ping 成功,数据包流向如下图所示. 1)根据 bbox1 的路由表,将数据包从 cal0 发出. 2)数据经过 ...