专栏首页实时计算Scala Http请求工具类

Scala Http请求工具类

import java.io.IOException import java.util import org.apache.http.client.ClientProtocolException import org.apache.http.client.entity.UrlEncodedFormEntity import org.apache.http.client.methods.{HttpGet, HttpPost} import org.apache.http.impl.client.{DefaultHttpClient, HttpClients} import org.apache.http.message.BasicNameValuePair import org.apache.http.util.EntityUtils import org.slf4j.LoggerFactory import scala.collection.JavaConversions._ import scala.reflect.macros.ParseException

object HttpClientUtils {

val logger = LoggerFactory.getLogger("out")

def get(url: String): String = { val httpclient = new DefaultHttpClient() try { // 创建httpget. val httpget = new HttpGet(url) // 执行get请求. val response = httpclient.execute(httpget) try { // 获取响应实体 val entity = response.getEntity() EntityUtils.toString(entity, "utf-8") } finally { response.close() } } catch { case ex: ClientProtocolException => {logger.error(ex.getMessage);null} case ex: ParseException => {logger.error(ex.getMessage);null} case ex: IOException => {logger.error(ex.getMessage);null} } finally { // 关闭连接,释放资源 httpclient.close() }

}

def post(url: String, map: Map[String,String]): String = { //创建httpclient对象 val client = HttpClients.createDefault try { //创建post方式请求对象 val httpPost = new HttpPost(url) //装填参数 val nvps:util.ArrayList[BasicNameValuePair] = new util.ArrayList[BasicNameValuePair] if (map != null) { for (entry <- map.entrySet) { nvps.add(new BasicNameValuePair(entry.getKey, entry.getValue)) } } //设置参数到请求对象中 httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8")) //执行请求操作,并拿到结果(同步阻塞) val response = client.execute(httpPost) //获取结果实体 val entity = response.getEntity var body = "" if (entity != null) { //按指定编码转换结果实体为String类型 body = EntityUtils.toString(entity, "UTF-8") } //释放链接 response.close() body } finally { client.close() } } }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kafka到底有几个Offset?——Kafka核心之偏移量机制

    ​ Kakfa的Offset机制是其最核心机制之一,由于API对于部分功能的实现,我们有时并没有手动去设置Offset,那么Kafka到底有几个Offset呢?

    实时计算
  • Kafka 0.8 Producer (0.9以前版本适用)

    Kafka旧版本producer由scala编写,0.9以后已经废除,但是很多公司还在使用0.9以前的版本,所以总结如下: 要注意包Producer是 kaf...

    实时计算
  • Atlas 2.1.0 实践(2)—— 安装Atlas

    在完成Atlas编译以后,就可以进行Atlas的安装了。Atlas的安装主要是安装Atlas的Server端,也就Atlas的管理页面,并确保Atlas与Kaf...

    实时计算
  • spark streaming窗口聚合操作后如何管理offset

    很多知识星球球友问过浪尖一个问题: 就是spark streaming经过窗口的聚合操作之后,再去管理offset呢?

    Spark学习技巧
  • Hadoop通过HCatalog编写Mapreduce任务访问hive库中schema数据

    1、dirver package com.kangaroo.hadoop.drive; import java.util.Map; import java.u...

    用户1225216
  • Spring Security技术栈开发企业级认证与授权(十四)使用Spring Social集成QQ登录验证方式

    在前一篇文章中介绍到,Spring Social封装了OAuth协议的标准步骤,我们只需要配置第三方应用的认证服务器地址即可,就可以获取到访问令牌Access ...

    itlemon
  • 7 Papers & Radios | CVPR 2020获奖论文;知识蒸馏综述

    摘要:近年来,深度神经网络在业界和学术界均取得了巨大成功,特别是在视觉识别和神经语言处理方面的应用。深度学习的巨大成功主要归功于自身强大的可扩展性,既有大规模的...

    机器之心
  • freeswitch笔记(9)-esl outbound中如何放音采集按键?

    关于这个功能,esl-client 上给出的源码示例极具误导性,根本跑不起来,见: https://github.com/esl-client/esl-clie...

    菩提树下的杨过
  • spark streaming窗口及聚合操作后如何管理offset

    对于spark streaming来说窗口操作之后,是无法管理offset的,因为offset的存储于HasOffsetRanges,只有kafkaRDD继承了...

    Spark学习技巧
  • java.lang.IndexOutOfBoundsException and drawPosText

    郁闷。。报错的原因是数组超范围了。。 还以为是for语句写错了,看了半天。。。没错啊。。。

    凌川江雪

扫码关注云+社区

领取腾讯云代金券