HTTP POST请求远程访问接口详细文档

第一步,创建httpPost方法

public static String httpPost(String urlStr,String params){
    URL connect;
    StringBuffer data = new StringBuffer();
    try {
        connect = new URL(urlStr);
        HttpURLConnection connection = (HttpURLConnection)connect.openConnection();
        connection.setRequestMethod("POST");
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setUseCaches(false);//post不能使用缓存
        connection.setInstanceFollowRedirects(true);
        connection.setRequestProperty("accept", "*/*");
        connection.setRequestProperty("connection", "Keep-Alive");
        connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
        OutputStreamWriter paramout = new OutputStreamWriter(
                connection.getOutputStream(),"UTF-8");
        /*String paramsStr = "";   //拼接Post 请求的参数
        //System.out.println("拼接字符串为字符串params:"+params);
        for(String param : params.keySet()){
            paramsStr += "&" + param + "=" + params.get(param);
        }
        if(!paramsStr.isEmpty()){
            paramsStr = paramsStr.substring(1);
        }*/
        System.out.println("拼接字符串为字符串paramsStr:"+params);
        paramout.write(params);
        paramout.flush();
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                connection.getInputStream(), "UTF-8"));
        String line;
        while ((line = reader.readLine()) != null) {
            data.append(line);
        }

        paramout.close();
        reader.close();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return data.toString();
}
注意事项中间参数方式可以按照场景切换。

第二步:生成sign签名

1、有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 

2、在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值.

注意事项

1、参数名ASCII码从小到大排序(字典序);

2、如果参数的值为空不参与签名;

3、参数名区分大小写;

4、key为固定字符值udhjskenc。

public static String createSign(String characterEncoding, SortedMap<Object,Object> parameters, String key){
    StringBuffer sb = new StringBuffer();
    StringBuffer sbkey = new StringBuffer();
    Set es = parameters.entrySet();  //所有参与传参的参数按照accsii排序(升序)
    Iterator it = es.iterator();
    while(it.hasNext()) {
        Map.Entry entry = (Map.Entry)it.next();
        String k = (String)entry.getKey();
        Object v = entry.getValue();
        //空值不传递,不参与签名组串
        if(null != v && !"".equals(v)) {
            sb.append(k + "=" + v + "&");
            sbkey.append(k + "=" + v + "&");
        }
    }
    //System.out.println("字符串:"+sb.toString());
    sbkey=sbkey.append("appSecret="+key);

    //MD5加密,结果转换为大写字符
    String sign = MD5Util.MD5Encode(sbkey.toString(), characterEncoding).toUpperCase();
    System.out.println("MD5加密值sign:"+sign);
    System.out.println("拼接字符串为字符串:"+sb.toString()+"sign="+sign);
    return sb.toString()+"sign="+sign;
}

第三步:调试接口

public static void main(String[] args) throws Exception {
    //按照ASCII码从小到大排序获取sign
    SortedMap<Object,Object> map=new TreeMap<Object,Object>();
    String appid ="OYTBSJJtPpGyYl7EDFS3";
    String dt =String.valueOf(System.currentTimeMillis());
    String iccid ="124587656541232312";
    String secret ="DV7cd54dDSEWD54fserdswe";
    String appSecret ="udhjskenc";
    map.put("iccid", iccid);
    map.put("appid", appid);
    map.put("dt", dt);
    map.put("secret", secret);
    String sign = createSign("UTF-8",map,appSecret);
    System.out.println("最后结果:"+sign);
    String url="你自己应该访问的链接!";
    System.out.println(httpPost(url2,sign));
}

注意事项

        我这里调用httpPost直接传输的拼接好的参数sign,需要根据自己的场景进行修改!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
css(name) 访问第一个匹配元素的样式属性。 -------------------------------------------------------------------------------- Return a style property on the first matched element. 返回值 String 参数 name (String) : 要访问的属性名称 示例 取得第一个段落的color样式属性的值。 jQuery 代码: $("p").css("color"); toggle(fn,fn) 每次点击时切换要调用的函数。 如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数。随后的每次点击都重复对这两个函数的轮番调用。 可以使用unbind("click")来删除。 -------------------------------------------------------------------------------- Toggle between two function calls every other click. Whenever a matched element is clicked, the first specified function is fired, when clicked again, the second is fired. All subsequent clicks continue to rotate through the two functions. Use unbind("click") to remove. 返回值 jQuery 参数 fn (Function) : 第奇数次点击时要执行的函数。 fn (Function) : 第偶数次点击时要执行的函数。 示例 对表格的切换一个类 jQuery 代码: $("td").toggle( function () { $(this).addClass("selected"); }, function () { $(this).removeClass("selected"); } ); ajaxSuccess(callback) AJAX 请求成功时执行函数。Ajax 事件。 XMLHttpRequest 对象和设置作为参数传递给回调函数。 -------------------------------------------------------------------------------- Attach a function to be executed whenever an AJAX request completes successfully. This is an Ajax Event. The XMLHttpRequest and settings used for that request are passed as arguments to the callback. 返回值 jQuery 参数 callback (Function) : 待执行函数 示例 当 AJAX 请求成功后显示消息。 jQuery 代码: $("#msg").ajaxSuccess(function(evt, request, settings){ $(this).append("<li>Successful Request!</li>"); }); jQuery.ajax(options) 通过 HTTP 请求加载远程数据。 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。 $.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该对象,但特殊情况下可用于手动终止请求。 注意: 如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml")。错误的 MIME 类型可能导致不可预知的错误。见 Specifying the Data Type for AJAX Requests 。 $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。详细参数选项见下。 jQuery 1.2 中,您可以跨域加载 JSON 数据,使用时需将数据类型设置为 JSONP。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。数据类型设置为 "jsonp" 时,jQuery 将自动调用回调函数。 -------------------------------------------------------------------------------- Load a remote page using an HTTP request. This is jQuery's low-level AJAX implementation. See $.get, $.post etc. for higher-level abstractions that are often easier to understand and use, but don't offer as much functionality (such as error callbacks). $.ajax() returns the XMLHttpRequest that it creates. In most cases you won't need that object to manipulate directly, but it is available if you need to abort the request manually. Note: If you specify the dataType option described below, make sure the server sends the correct MIME type in the response (eg. xml as "text/xml"). Sending the wrong MIME type can lead to unexpected problems in your script. See Specifying the Data Type for AJAX Requests for more information. $.ajax() takes one argument, an object of key/value pairs, that are used to initialize and handle the request. See below for a full list of the key/values that can be used. As of jQuery 1.2, you can load JSON data located on another domain if you specify a JSONP callback, which can be done like so: "myurl?callback=?". jQuery automatically replaces the ? with the correct method name to call, calling your specified callback. Or, if you set the dataType to "jsonp" a callback will be automatically added to your Ajax request. 返回值 XMLHttpRequest 参数 options (可选) : AJAX 请求设置。所有选项都是可选的。 选项 async (Boolean) : (默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。 beforeSend (Function) : 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。 Ajax Event. cache (Boolean) : (默认: true) jQuery 1.2 新功能,设置为 false 将不会从浏览器缓存中加载请求信息。 complete (Function) : 请求完成后回调函数 (请求成功或失败时均调用)。参数: XMLHttpRequest 对象,成功信息字符串。 Ajax 事件。 contentType (String) : (默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型。默认值适合大多数应用场合。 data (Object,String) : 发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。 dataType (String) : 预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值: "xml": 返回 XML 文档,可用 jQuery 处理。 "html": 返回纯文本 HTML 信息;包含 script 元素。 "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。 "json": 返回 JSON 数据 。 "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。 error (Function) : (默认: 自动判断 (xml 或 html)) 请求失败时调用时间。参数:XMLHttpRequest 对象,错误信息,(可能)捕获的错误对象。Ajax 事件。 global (Boolean) : (默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件。 ifModified (Boolean) : (默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。 processData (Boolean) : (默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。 success (Function) : 请求成功后回调函数。参数:服务器返回数据,数据格式。 Ajax 事件。 timeout (Number) : 设置请求超时时间(毫秒)。此设置将覆盖全局设置。 type (String) : (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。 url (String) : (默认: 当前页地址) 发送请求的地址。 示例 加载并执行一个 JS 文件。 jQuery 代码: $.ajax({ type: "GET", url: "test.js", dataType: "script" }); -------------------------------------------------------------------------------- 保存数据到服务器,成功时显示信息。 jQuery 代码: $.ajax({ type: "POST", url: "some.php", data: "name=John&location=Boston", success: function(msg){ alert( "Data Saved: " + msg ); } }); -------------------------------------------------------------------------------- 装入一个 HTML 网页最新版本。 jQuery 代码: $.ajax({ url: "test.html", cache: false, success: function(html){ $("#results").append(html); } }); -------------------------------------------------------------------------------- 同步加载数据。发送请求时锁住浏览器。需要锁定用户交互操作时使用同步方式。 jQuery 代码: var html = $.ajax({ url: "some.php", async: false }).responseText; -------------------------------------------------------------------------------- 发送 XML 数据至服务器。设置 processData 选项为 false,防止自动转换数据格式。 jQuery 代码: var xmlDocument = [create xml document]; $.ajax({ url: "page.php", processData: false, data: xmlDocument, success: handleResponse });
hadoop 中文文档index Prefetch chain 预处理链 Pre selector Precondition Enforcer Fetch chain 提取链 Fetch DNS Fetch Http Extractor chain抽取链 Extractor HTML Extractor JS Write Chain 写链 ARC Writer Processor Post process Chain Crawl State Updater Post selector 范围部件,边界部件,处理器链   预取链:主要是做一些准备工作,例如,对处理进行延迟和重新处理,否决随后的操作。 提取链:主要是获得资源,进行DNS转换,填写请求和响应表单   抽取链:当提取完成时,抽取感兴趣的HTML,JavaScript,通常那里有新的也适合的URI,此时URI仅仅被发现,不会被评估   写链:存储爬行结果,返回内容和抽取特性,过滤完存储。   提交链:做最后的维护,例如,测试那些不在范围内的,提交给边界部件 1. Pre fetch Chain 预处理链。 1.1 precondition Enforcer: 预处理。Enforcer 处理。确定、提供捉取所需要的基本信息。 例如:查询、请求一个DNS,或者是 请求、分析一个robots.txt文件。--这些都是在进行下一步之前所要做的事情。 1.2 Pre selector :预选择器。查看爬虫的域,看是否这个URL已经被处理(捉取)过了。如果被捉取过了,那么就把这个URL的状态置为 OUT_OF_SCOPE (超出了域的范围),并且直接跳到 post processor(后处理),更新该爬虫的信息。 1.3 Quota Enforcer :限额处理。这是一个简单的配额处理器。检查主机、服务器、边界组 和现在的捉取URL已经超过了配额的话,阻塞正在处理的URL,并且该URL的状态设置为 S_BLOCKED_BY_QUOTA。 1.4 Runtime Limit Enforcer :持续时间限制处理。这是在爬虫程序中的时限控制处理器。 这个处理器是扩展和提高Heritrix 长时间运行能力所必不可少的一个类。设置允许的最大允许时间,如果对一个URL的处理超过了这个最大的时间,那么处理器可以停止或暂停这个URL的处理。 1.4.1 暂停工作-暂停爬虫。一个修改(增加)持续时间可以重新恢复爬虫的工作。如果试图恢复爬虫的运行,而不修改运行允许的持续时间的话,爬虫会再次被停止。 1.5 Runtime Limit Enforcer . Operation:状态变量枚举。包含处理状态的常量。暂停、停止、阻塞。 2. Fetch Chain 捉取处理链。 2.1 Fetch DNS :捉取DNS。处理器去分析 和处理以dns:开始的URL. 2.2 Fetch HTTP :捉取HTTP。使用了Apache 的 HttpClient类库。处理以http:开头的URL。 2.3 Fetch FTP : 捉取FTP。捉取FTP的目录和文档,远程的FTP服务器必须支持 NLIST 命令。现在大多数的FTP服务器支持。 2.4 Fetch Stats :捉取的主机、端口、或者是边检组的一个统计。 2.5 BDB Cookie Storage :缓存器。使用BDB嵌入数据库引擎实现的缓存器,存储容量大。 2.6 Default Server Cache :服务器默认缓存器。 2.7 Heritrix Http Method Retry Handler : http 方法重请求帮助类。 2.8 Heritrix Protocol Socket Factory : Hreitrix的标准协议端口工厂。 2.9 Heritrix SSL Protocol Socket Factory :heritrix的SSL 协议端口工厂。 2.10 Simple Cookie Storage : 简单缓存存储器。 3. Extractor Chain 链接提取处理链。 3.1 Extractor 处理捉取的URL链接,这个类提供错误帮助当分析文档内容的时候。当然可以用它的子类 ContentExtactor 来替代。 3.2 Extractor HTML 从HTML 内容里提取链接。 3.3 Extractor CSS 从 CSS 里面提取链接。 3.4 Extractor JS 从 JS 里面提取链接。 3.5 Extractor PDF 从 PDF里面提起链接。 3.6 Extractor SWF 从 Flash里面提取链接。 3.7 Extractor Universal 最后一个链接提取器,通过提取任何看起来像链接的。如果使用的话,那么一般把它放在链接提取链的最后一个。 3.8 Extractor URI 从URI 里面提取链接。如果该URI中含有其他链接的话。 3.9 Extractor XML 从XML里面提取 链接。 3.10 Link Context 链接字典的内容。 4. Write Chain 写处理链。 4.1 ARC Writer Processor 这是一个把捉取到的结果进行写写的处理,存储为 ARC(网络档案文件格式)的文档。每个 Heritrix实例只有一个这样的些处理线程在运行。 4.2 Default Metadata Provider 一个合适爬虫元数据的标准集。 4.3 Mirror Writer Processor 镜像 写处理。把捉取到的结果以镜像的形式存储。 4.4 Writer Pool Processor 写处理池。这是一个虚拟的文件池处理的实现。是ARC Writer Processor的父类。 5. Post Process Chain 后处理链。 5.1 Crawl State Updater :爬虫状态更新程序。 这是在处理了一个URL后的一步,用来更新已经被处理的URL的信息。这些信息包括IP、robots等信息。 5.2 Frontier Scheduler :定制边界URL的查询调度表。增加想要的或者是链接到其他地的链接。 5.3 Links Scope r 链接范围。确定哪个链接在范围内。把链接转换成Crawl URL类型,然后去查看该Crawl URL是不是在范围内。 5.4 Low Disk Pause Processor 当系统的磁盘很少了的时候,暂停处理。 5.5 Supplementary Links Scope r 做完普通的处理后再追加一些补充的处理的类。 5. Frontier 边界,下一个URL决定器。 5.1 Adaptive Revisit Frontier 重新检索边界程序。这是一个重复访问指定URL的边界程序。等待时间是可以设置的。 5.2 Adaptive Revisit Host Queue 是Crawl URL的一个主要的队列,每个队列应该代表一个主机(虽然这不是必须的)。 5.3 Adaptive Revisit Queue List 管理着Adaptive Revisit Host Queue 组成的列表。 5.4 BDB Frontier BDB数据库边界。使用 Berkeley DB 来维护自己知道的主机。 5.5 BDB Multiple Work Queues 是一个用嵌入式数据库实现的。 5.6 BDB Work Queue 一个独立的,有着相同class Key的列表。 6. Toe Pool 线程池。 6.1 Toe Pool 是一个Toe Thread线程池。 6.2 Toe Thread 是一个线程。 7 Crawl Controller Implement 主控制程序。 该类集合了所有的类,它可以协调执行爬虫和提供高水平的界面给运行的爬虫。
Web服务器日志分析 刘培顺 Web服务器日志分析全文共68页,当前为第1页。 提纲 APACHE日志分析 IIS日志分析 Web服务器日志分析全文共68页,当前为第2页。 APACEH日志分析 web 服务器日志记录了 Web 服务器接收处理请求及运行时错误等各种原始信息 。 通过对日志进行统计 、 分析和综合 , 就能有效地掌握服务器的运行状况 、 发现和排除错误原因 、 了解客户访问分布等,更好地加强系统的维护和管理。 Web 服务模式主要有三个步骤: 服务请求 ,包含用户端的众多基本信息,如 IP 地址、浏览器类型、目标 URL 等。 服务响应 , Web 服务器接收到请求后,按照用户要求运行相应的功能,并将信息返回给用户 。如果出现错误,将返回错误代码。 追加日志 ,服务器将对用户访问过程中的相关信息以追加的方式保存到日志文件中。 Web服务器日志分析全文共68页,当前为第3页。 Apache 日志的配置 日志类型 错误日志 访问日志 传输日志 Cookie 日志 Web服务器日志分析全文共68页,当前为第4页。 日志内容 错误日志包含 获知失效链接 获知 CGI 错误 获知用户认证错误 访问日志包含 : 访问服务器的远程机器的地址:可以得知浏览者来自何方 浏览者访问的资源:可以得知网站中的哪些部分最受欢迎 浏览者的浏览时间:可以从浏览时间 ( 如工作时间或休闲时间 ) 对网站内容进行调整 浏览者使用的浏览器:可以根据大多数浏览者使用的浏览器对站点进行优化 Web服务器日志分析全文共68页,当前为第5页。 访问日志分类: 为了便于分析 Apache 的访问日志, Apache 的默认配置文件中,按记录的信息不同 ( 用格式说明不同的信息 ) 将访问日志分为 4 类: 普通日志格式 (common log format,CLF)common 大多数日志分析软件都支持这种格式 参考日志格式 (referer log format) referrer 记录客户访问站点的用户身份 代理日志格式 (agent log format)agent 记录请求的用户代理 综合日志格式 (combined log format)combined 结合以上三种日志信息 Web服务器日志分析全文共68页,当前为第6页。 4种访问日志类型 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent Web服务器日志分析全文共68页,当前为第7页。 综合日志 由于综合日志格式简单地结合了 3 种日志信息 , 所以在配置访问日志时 , 要么使用一个综合文件进行记录 , 要么使用分离的多个 (1-3) 文件记录 。 通常使用一个综合日志格式文件进行记录,配置为: CustomLog /var/log/apache2/ access .log combined Web服务器日志分析全文共68页,当前为第8页。 日志文件 若使用 3 个文件分别进行记录,配置为: CustomLog /var/log/apache2/access.log common CustomLog /var/log/apache2/referer.log referer CustomLog /var/log/apache2/agent.log agent Web服务器日志分析全文共68页,当前为第9页。 日志格式说明 %v 进行服务的服务器的标准名字 ServerName , 通常用于虚拟主机的日志记录中。 %h 客户机的 IP 地址。 %l 从 identd 服务器中获取远程登录名称,基本已废弃。 %u 来自于认证的远程用户。 %t 连接的日期和时间。 Web服务器日志分析全文共68页,当前为第10页。 日志格式说明 %r HTTP 请求的首行信息,典型格式是 METHOD RESOURCE PROTOCOL " ,即 " 方法 资源 协议 " 。 经常可能出现的 METHOD 是GET 、 POST 和 HEAD ; RESOURCE 是指浏览者向服务器请求文档或 URL ; PROTOCOL 通常是 HTTP ,后面再加上版本号,通常是HTTP/1.1 。 Web服务器日志分析全文共68页,当前为第11页。 日志格式说明 %>s 响应请求的状态代码 , 一般这项的值是 200 , 表示服务器已经成功地响应浏览器的请求 , 一切正常 ; 以 3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值