This commit is contained in:
zhaolizhi
2018-11-02 20:16:55 +08:00
parent 814a335fd0
commit 972dcccb88
3 changed files with 125 additions and 50 deletions

View File

@@ -194,8 +194,62 @@
* 获取用户本周已摄入的营养元素的量: `getUser`得到当前用户的信息,解析后用`MyUser`的`getEaten_elements()`获取到Element对象.里面有各种元素信息
* **根据多个食材组合来搜菜**
```java
List<String> materialList = new ArrayList<>();
materialList.add("土豆");
materialList.add("茄子");
WebUtil.getInstance().getMenusByMaterials(materialList, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String json = response.body().string();
FoodMenu[] menus = new Gson().fromJson(json, FoodMenu[].class);
for (FoodMenu menu : menus) {
System.out.println(menu.getName());
}
}
});
```
* **用户的浏览历史: 添加用户和菜谱的多对多关系**
```java
//获取历史记录 传入username
WebUtil.getInstance().getEatenHistory("test5", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String json = response.body().string();
History[] histories = new Gson().fromJson(json, History[].class);
System.out.println(Arrays.toString(histories));
}
});
//添加历史记录 传入username 和 Menu的名字
WebUtil.getInstance().addEatenHistory("test5", "多味茄子泥", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String json = response.body().string();
History history = new Gson().fromJson(json, History.class);
System.out.println(history);
}
});
```
* 菜名搜索: `getMenu`方法,传入菜名(菜名通过其他的各种关联方式获取) (menu.calorie是直接爬到的卡路里值,营养元素里的menu.elements.calorie卡路里是根据每个食材的卡路里计算的,相对来说,menu.calorie的值更准确)
* 功效搜菜 `getMenuClassification`传入分类(功效)参数,比如川菜.搜到所有的川菜名字.然后可以用菜名搜索搜某个菜的详细信息

View File

@@ -0,0 +1,50 @@
package com.example.ninefourone.nutritionmaster.bean;
public class History {
/**
* id : 13 time : 2018-11-02T15:35:20.015542+08:00 user : 11 menu : 多味茄子泥
*/
private int id;
private String time;
private int user;
private String menu;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public int getUser() {
return user;
}
public void setUser(int user) {
this.user = user;
}
public String getMenu() {
return menu;
}
public void setMenu(String menu) {
this.menu = menu;
}
@Override
public String toString() {
return "History{" + "id=" + id + ", time='" + time + '\'' + ", user=" + user + ", menu='" + menu + '\'' + '}';
}
}

View File

@@ -71,7 +71,7 @@ public class WebUtil {
/**
* 获取count个随机菜谱,在回调中解析为一个Menu数组 根据用户的体质,病理,职业推荐
*
*
* @param count
* @param callback
*/
@@ -128,12 +128,6 @@ public class WebUtil {
mClient.newCall(request).enqueue(callback);
}
public static void getAllOccupations(Callback callback) {
OkHttpClient mClient = new OkHttpClient();
Request request = new Request.Builder().url("http://120.77.182.38/occupation/").build();
mClient.newCall(request).enqueue(callback);
}
/**
* 获取体质需要的食材 { "physical_name": "气虚质", "cure_material": [ "人参", "人参须",
* "去芯莲子", "去芯莲子3~4人份", "土茯苓", ... ] }
@@ -336,52 +330,29 @@ public class WebUtil {
mClient.newCall(request).enqueue(callback);
}
public static String HttpPost(String requestUrl, String accessToken, String params) throws Exception {
System.out.println(params);
String generalUrl = "";
generalUrl = requestUrl + "?access_token=" + accessToken;
System.out.println("发送的连接为:" + generalUrl);
URL url = new URL(generalUrl);
// 打开和URL之间的连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
System.out.println("打开链接,开始发送请求" + new Date().getTime() / 1000);
connection.setRequestMethod("POST");
// 设置通用的请求属性
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setUseCaches(false);
connection.setDoOutput(true);
connection.setDoInput(true);
public void addEatenHistory(String username, String menuName, Callback callback) {
String url = "http://120.77.182.38/myuser/add_eaten_history/";
RequestBody formBody = new FormBody.Builder().add("username", username).add("menu", menuName).build();
Request request = new Request.Builder().url(url).post(formBody).build();
mClient.newCall(request).enqueue(callback);
}
// 得到请求的输出流对象
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.writeBytes(params);
out.flush();
out.close();
public void getEatenHistory(String username, Callback callback) {
String url = "http://120.77.182.38/myuser/get_eaten_history?username=" + username;
Request request = new Request.Builder().url(url).build();
mClient.newCall(request).enqueue(callback);
}
// 建立实际的连接
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> headers = connection.getHeaderFields();
// 遍历所有的响应头字段
for (String key : headers.keySet()) {
System.out.println(key + "--->" + headers.get(key));
public void getMenusByMaterials(List<String> materialList, Callback callback) {
// POST
String url = "http://120.77.182.38/menus/get_menus_by_materials/";
FormBody.Builder builder = new FormBody.Builder();
for (String material : materialList) {
builder.add("material", material);
}
// 定义 BufferedReader输入流来读取URL的响应
BufferedReader in = null;
if (requestUrl.contains("nlp"))
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK"));
else
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String result = "";
String getLine;
while ((getLine = in.readLine()) != null) {
result += getLine;
}
in.close();
System.out.println("请求结束" + new Date().getTime() / 1000);
System.out.println("result:" + result);
return result;
RequestBody formBody = builder.build();
Request request = new Request.Builder().url(url).post(formBody).build();
mClient.newCall(request).enqueue(callback);
}
public static void main(String[] args) {