「Java调url」java调url接口获取数据
今天给各位分享Java调url的知识,其中也会对java调url接口获取数据进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java中用什么方法调用远程url并接收其返回的xml或json
- 2、关于java调用url接口方法的问题
- 3、Java调用URL错误,报505
- 4、java怎样获取url参数
- 5、java关于URL类的调用。。。
java中用什么方法调用远程url并接收其返回的xml或json
现在Java中的远程调用无非三种方法:
1:前端通过ajax远程调用,设置相应的参数,后天在需要调用的方法加上注解(具体自行百度),然后配置spring.xml文件。(此方法不推荐)。
2:通过httpclient远程调用(此方法也不推荐)。
3:使用分布式dubbo+集群zookeeper 技术(推荐)
关于java调用url接口方法的问题
对于具体的数据请求方式、请求方式、响应数据格式要看你的接口要求,这是通用代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Test {
public static void main(String[] args) throws IOException {
System.out.println(getData());
}
public static String getData() throws IOException {
// 创建指定url的url对象,这里的地址是:淘宝商品搜索建议
URL url = new URL(";q=电脑callback=cb");
// 创建http链接对象
HttpURLConnection con = (HttpURLConnection) url.openConnection();
// 设置请求方式
con.setRequestMethod("POST");
// 打开链接,上一步和该步骤作用相同,可以省略
con.connect();
// 获取请求返回内容并设置编码为UTF-8
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
// 将返回数据拼接为字符串
StringBuffer sb = new StringBuffer();
// 临时字符串
String temp = null;
// 获取数据
while ((temp = reader.readLine()) != null) {
sb.append(temp);
}
// 关闭流
reader.close();
return sb.toString();
}
}
结果:
Java调用URL错误,报505
HttpURLConnection 请求中 参数中如果有 空格,请求则会 505错误
解决: 需要对有空格的参数 做URL编码处理。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import sun.net.;
import com.alibaba.fastjson.JSONObject;
public class SingleTableRestClient
{
private static final String targetURL = "*?queryParam=";
public static void main(String[] args)
{
JSONObject obj = new JSONObject();
obj.put("XM", "匡匡");
obj.put("BIRTHDAY", span style="color:#FF6666;"getURLEncoder/span("1988-01-01 00:00:00,1988-12-30 00:00:00"));
String urls = targetURL + obj.toString();
requestRestServer(urls);
}
public static JSONObject requestRestServer(String url)
{
JSONObject obj = new JSONObject();
try
{
URL restServiceURL = new URL(url);
HttpURLConnection httpConnection = (HttpURLConnection) restServiceURL.openConnection();
httpConnection.setRequestMethod("GET");
httpConnection.setRequestProperty("Accept", "application/json");
httpConnection.setRequestProperty("Accept-Charset", "UTF-8");
httpConnection.setRequestProperty("contentType", "UTF-8");
if (httpConnection.getResponseCode() != 200) {
throw new RuntimeException("HTTP GET Request Failed with Error code : "
+ httpConnection.getResponseCode());
}
BufferedReader responseBuffer = new BufferedReader(new InputStreamReader(
(httpConnection.getInputStream()),"utf-8"));
String output = "";
String result = "";
System.out.println("Output from Server: \n");
while ((output = responseBuffer.readLine()) != null) {
//System.out.println(output);
result = output;
}
obj = JSONObject.parseObject(result);
System.out.println(obj.toString());
httpConnection.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return obj;
}
@SuppressWarnings("deprecation")
span style="color:#FF6666;"private static String getURLEncoder(String dest)
{
return URLEncoder.encode(dest);
}/span
}
修改后 正常ok
java怎样获取url参数
如果是javaweb 项目,那么非常简单,直接调用 HttpServletRequest 对象的 .getParamter("参数名称") 方法即可得到。
如果是普通java 项目:
/**
* 获取网址的指定参数值
*
* @param url
* 网址
* @param parameter
* 参数名称
* @author cevencheng
* @return
*/
public static String getParameter(String url, String parameter, String defaultValue) {
try {
final String charset = "utf-8";
url = URLDecoder.decode(url, charset);
if (url.indexOf('?') != -1) {
final String contents = url.substring(url.indexOf('?') + 1);
HashMapString, String map = new HashMapString, String();
String[] keyValues = contents.split("");
for (int i = 0; i keyValues.length; i++) {
String key = keyValues[i].substring(0, keyValues[i].indexOf("="));
String value = keyValues[i].substring(keyValues[i].indexOf("=") + 1);
if (key.equals(parameter)) {
if (value == null || "".equals(value.trim())) {
return defaultValue;
}
return value;
}
map.put(key, value);
}
}
return null;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
java关于URL类的调用。。。
你上面的代码中一共有两个操作,1,向一个url请求数据;2,获得数据,并解析成html。你遇到的响应慢的问题不在你这个代码中,而是在你发起url请求时,url的服务器给你响应的速度。url的服务器可能有数据库的操作或其它耗时操作,当它没有给你返回数据时,你这个方法是阻塞的,并不会立刻返回。
关于Java调url和java调url接口获取数据的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-22,除非注明,否则均为
原创文章,转载请注明出处。