JAVA WEB项目如何获取API接口中的数据

比如这样的一个api,java怎么获得数据

上传订单备注
简要描述:

用户上传订单备注
请求URL:

app-admin-SetMessage
请求方式:

get
参数:

参数名 必选 类型 说明
token 是 string 验证
id 是 string 订单id
msg 是 string 备注内容 最大文本长度 30
返回示例

{
"msg": 1,//0 失败
"data": '更新成功',
}

能写详细一点最好了,写个注释吧大神,小白看不明白

java接口:大致如下

    /**
     * 用户上传订单备注
     * @param token 必传 验证
     * @param id 必传 订单id
     * @param msg 必传 备注内容 最大文本长度 30
     * @return
     */
    @RequestMapping("/app-admin-SetMessage")
    @ResponseBody
    public Order app_admin_SetMessage(@RequestParam(value = "token" ,required = true) String token,@RequestParam(value = "id" ,required = true) String id,@RequestParam(value = "msg" ,required = true) String msg){
        Order order=new Order();
        boolean flag=false;  //操作是否成功标志
        //写你的操作,此处省略...
        if(flag){
            order.setMsg(1);   //操作成功
            order.setData("更新成功!");
        }else{
            order.setMsg(0);   //操作失败
            order.setData("更新失败!");
        }
        return order;  //返回订单信息
    }

js:

  $.ajax({
                    url:  "/app-admin-SetMessage?token="+token+"&id="+id+"&msg="+msg,
                    dataType: "json",
                    success: function(order) {
                        if(order.msg === 1) {
                            alert(order.data);
                        } else {
                            alert(order.data);
                        }
                    },
                    error: function() {
                        alert("error"); 
                    }
                });

这个ajax里面的token等参数需要你在这个function前面定义并获取,不然会报错。
其次,我这里返回的是order对象,如果你的order对象里面没有msg及data这两个参数,你可以把它们放到一个map里面,然后返回这个map。接口前面必须要加上@ResponseBody注解,不懂这个注解可以百度.

就直接ajax get请求这个api 的地址就可以了,后台不管是msg、data,
统统打包到封装到一个自定义的类里面去,直接返回,在回调中获取就可以了

message : success

我比较小白啊,大神们有完整代码能给我做参考的吗,要是觉得这个悬赏太少了我可以直接红包

直接在controller 注入该类,或者new该类,调用该类的方法就行了,

发一个http请求过去,带上参数就可以了,和我们在浏览器上访问资源是一样的 只是它返回的是json格式的数据而已
下面给你两个方法,
public static String do_post(String url, List name_value_pair) throws IOException {
String body = "{}";
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
HttpPost httpost = new HttpPost(url);
httpost.setEntity(new UrlEncodedFormEntity(name_value_pair, StandardCharsets.UTF_8));
HttpResponse response = httpclient.execute(httpost);
HttpEntity entity = response.getEntity();
body = EntityUtils.toString(entity);
} finally {
httpclient.getConnectionManager().shutdown();
}
return body;
}
public static String do_get(String url) throws ClientProtocolException, IOException {
String body = "{}";
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
body = EntityUtils.toString(entity);
} finally {
httpclient.getConnectionManager().shutdown();
}
return body;
}

传json字符串,后台解析成对象就好

给你参考一下这个,希望对你有用
$.ajax({
method: "POST",
url: "some.php",
data: { name: "John", location: "Boston" }
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});

你可以这样。现在聚合数据申请一个数据接口,自己先试试,聚合数据都提供示例代码。这种获取接口里面数据都不难,传递的数据类型一般都是json,有什么搞不定的,我们可以在一起讨论。

$.ajax({
method: "POST",
url: "some.php",
data: { name: "John", location: "Boston" }
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});

仅供参考

package wzh.Http; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; public class HttpRequest { /** 向指定URL发送GET方法的请求 @param url 发送请求的URL @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 @return URL 所代表远程资源的响应结果 / public static String sendGet(String url, String param) { String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; URL realUrl = new URL(urlNameString); // 打开和URL之间的连接 URLConnection connection = realUrl.openConnection(); // 设置通用的请求属性 connection.setRequestProperty("accept", "/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立实际的连接 connection.connect(); // 获取所有响应头字段 Map> map = connection.getHeaderFields(); // 遍历所有的响应头字段 for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader( connection.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } /** 向指定 URL 发送POST方法的请求 @param url 发送请求的 URL @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 @return 所代表远程资源的响应结果 / public static String sendPost(String url, String param) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 设置通用的请求属性 conn.setRequestProperty("accept", "/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送 POST 请求出现异常!"+e); e.printStackTrace(); } //使用finally块来关闭输出流、输入流 finally{ try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } } catch(IOException ex){ ex.printStackTrace(); } } return result; } } 调用方法: public static void main(String[] args) { //发送 GET 请求 String s=HttpRequest.sendGet("http://localhost:6144/Home/RequestString", "key=123&v=456"); System.out.println(s); //发送 POST 请求 String sr=HttpRequest.sendPost("http://localhost:6144/Home/RequestPostString", "key=123&v=456"); System.out.println(sr); }

http请求啊!
String str="";
GetMethod get = new GetMethod(url);
int status = client.executeMethod(get);
str=get.getResponseBodyAsString();

为你写了一个demo:
/**
* 向指定URL发送GET方法的请求
*
* @param url
* 发送请求的URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return URL 所代表远程资源的响应结果
/
public static String sendGet(String url, String param) {
String result = "";
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "
/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 获取所有响应头字段
Map> map = connection.getHeaderFields();
// 遍历所有的响应头字段
for (String key : map.keySet()) {
System.out.println(key + "--->" + map.get(key));
}
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}

public static void main(String[] args) {
    String token = "11";
    String id = "123";
    String msg = "xxxx";
    String parmas;
    Map map = new HashMap();
    map.put("token", token);
    map.put("id", id);
    map.put("msg", msg);
    sendGet("自己填url", prepareMap(map));
}

public static String prepareMap(Map<String, String> map) {
    String result = "";
    for (Map.Entry<String, String> stringIntegerEntry : map.entrySet()) {
        String key = stringIntegerEntry.getKey();
        String value = stringIntegerEntry.getValue();
        result = result.concat(key).concat("=").concat(value).concat("&");
    }
    int index = result.lastIndexOf("&");
    result = result.substring(0, index);
    return result;
}

生成记事本或者excell文件

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
public class HttpRequest {
/**
向指定URL发送GET方法的请求

@param url
发送请求的URL
@param param
请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
@return URL 所代表远程资源的响应结果
/
public static String sendGet(String url, String param) {
String result = "";
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 获取所有响应头字段
Map> map = connection.getHeaderFields();
// 遍历所有的响应头字段
for (String key : map.keySet()) {
System.out.println(key + "--->" + map.get(key));
}
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
/**
向指定 URL 发送POST方法的请求

@param url
发送请求的 URL
@param param
请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
@return 所代表远程资源的响应结果
/
public static String sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
return result;
}

}
调用方法:
public static void main(String[] args) {
//发送 GET 请求
String s=HttpRequest.sendGet("http://localhost:6144/Home/RequestString", "key=123&v=456");
System.out.println(s);
//发送 POST 请求
String sr=HttpRequest.sendPost("http://localhost:6144/Home/RequestPostString", "key=123&v=456");
System.out.println(sr);
}

你是前台页面获取?还是在后台获取?
前台用ajax,前面已经回答了我就给你个后台代码示例:
package com.iflytek.view;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;

/**

  • Created by silenceViking on 2017/10/31.
    */
    public class ttt {

    public static String readParse(String urlPath) throws Exception {
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    byte[] data = new byte[1024];
    int len = 0;

    URL url = new URL(urlPath);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    InputStream inStream = conn.getInputStream();
    while ((len = inStream.read(data)) != -1) {
        outStream.write(data, 0, len);
    }
    inStream.close();
    System.out.println("" +outStream.toByteArray());
    byte[] bb=outStream.toByteArray();
    
    return new String(outStream.toByteArray());//通过out.Stream.toByteArray获取到写的数据
    

    }

    public static void main(String[] args) throws Exception {
    //改成你要获取的api地址
    String url="http://118.190.204.208/Service1.svc/GetMenu?json=,idd22ltime2017/10/31%209:26:56";
    String str=readParse(url);

    ByteArrayInputStream bis=new ByteArrayInputStream(str.getBytes());
    ByteArrayOutputStream bos=new ByteArrayOutputStream();
    int temp=0;
    while((temp=bis.read())!=-1){
        char c=(char)temp;
        bos.write(Character.toLowerCase(c));
    }
    String newStr=bos.toString();
    try {
        bis.close();
        bos.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.print(newStr);
    

    }
    }


获取数据接口里面的数据,一般都是以json传递的。