常常在生产环境中,为了保密,我们不会发送get请求,而是发送post请求,下面我就使用httpclient方式举例说明发送post请求:
一、环境:idea16、jdk1.7、scala-2.10.5、httpclient-4.2.5、httpcore-4.2.5
二、调用聚合数据获取周边餐饮api实现代码:
package webservice.com.baidu.translate
import org.apache.http.{ HttpEntity, HttpResponse}
import org.apache.http.client.methods.HttpPost
import org.apache.http.entity.StringEntity
import org.apache.http.impl.client.DefaultHttpClient
import org.apache.http.protocol.HTTP
import org.apache.http.util.EntityUtils
/**
* Created by yangjf on 2017/3/15
* Update date:
* Time: 21:57
* Describle :周边餐饮美食调用
* 参考--》https://www.juhe.cn/docs/api/id/45
* Result of Test:
* Command:
* Email: jifei.yang@ngaa.com.cn
*/
object HttpClientPostTranslate {
def main(args: Array[String]) {
val httpclient = new DefaultHttpClient
try{
//http://api.k780.com:88/?app=weather.today&weaid=1&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=xml
val url="http://apis.juhe.cn/catering/query"
val key="your_AppKey"
val lng=116.4972671724 //经度
val lat=40.0089868141 //维度
val radius=3600 //搜索范围,单位M,默认3000
val page=2 //当前页数,默认1,最大50.
val dtype="json" //返回数据的格式,xml或json,默认json
val jsonParams="{\"key\":\""+key+"\",\"lng\": "+lng+" ,\"lat\": "+lat+" ,\"radius\": "+radius+",\"page\": "+page+",\"dtype\":\" "+dtype+"\"}"
//创建
val httpost = new HttpPost(url)
println("参数:"+jsonParams)
//json字符串,准备发送
try {
val stringEntity = new StringEntity(jsonParams, HTTP.UTF_8)
stringEntity.setContentType("application/json;charset=utf-8")
httpost.setEntity(stringEntity)
var response: HttpResponse = null
response = httpclient.execute(httpost)
val entity: HttpEntity = response.getEntity
try {
//必需触发
println(EntityUtils.toString(entity))
}catch {
case appleException:Exception=>println(appleException.toString)
}
}
catch {
case e: Exception => {
println("Exception is " + e.toString)
}
}
}catch {
case sendE:Exception=>{throw sendE}
}finally {
//关闭
httpclient.getConnectionManager.shutdown
}
}
}
//需要maven依赖
测试通过!