zoukankan      html  css  js  c++  java
  • nodejs -- http模块. request() 方法 , get方法.

    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 //发送请求:
    32 var req = http.request(options, function(res){
    33 
    34     console.log('status: ' + res.statusCode);
    35     console.log('headers: ' + JSON.stringify(res.headers));
    36 
    37     res.on('data', function(chunk){
    38         console.log(Buffer.isBuffer(chunk));
    39         console.log(typeof chunk);
    40     });
    41 
    42     res.on('end', function(){
    43         console.log('评论完毕!');
    44     });
    45 });
    46 
    47 
    48 req.on('error', function(e){
    49     console.log('Error: ' + e.message);
    50 });
    51 
    52 //写入请求数据:
    53 req.write(postData);
    54 
    55 //结束请求:必须写的:
    56 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 
     5 var postData = {
     6     'name': '小明',
     7     'age': 26
     8 };
     9 
    10 var postDataStr = querystring.stringify(postData);
    11 
    12 
    13 http.get('http://www.a.com/response.php?'+postDataStr, function(res){
    14     console.log('status: ' + res.statusCode);
    15     console.log('headers: ' + JSON.stringify(res.headers));
    16     var txt = '';
    17     res.on('data', function(chunk){
    18         // console.log(Buffer.isBuffer(chunk));
    19         // console.log(typeof chunk);
    20 
    21 
    22         txt += chunk;
    23     });
    24 
    25     res.on('end', function(){
    26         console.log(typeof txt);
    27         console.log(txt);
    28 
    29         console.log(typeof JSON.parse(txt));
    30         console.log(JSON.parse(txt));
    31         console.log(JSON.parse(txt).name);
    32         console.log(querystring.unescape(JSON.parse(txt).name));
    33     });
    34 }).on('error', function(e){
    35     console.log('Error: '+e.message);
    36 });

     PHP接收端: response.php

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

     运行:

     注意:

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

      

    参考链接:

  • 相关阅读:
    洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
    洛谷 P1062 数列
    洛谷 P2822 组合数问题
    HDU 6112 今夕何夕
    poj 2115 C Looooops
    HDU 6092 Rikka with Subset
    poj 2720 Last Digits
    poj 1254 Hansel and Grethel
    poj 1222 EXTENDED LIGHTS OUT
    poj 2459 Sumsets
  • 原文地址:https://www.cnblogs.com/cbza/p/7285426.html
Copyright © 2011-2022 走看看