API调用和sdk调用有什么区别啊?
任意64 发布于2017-12 浏览:13127 回复:12
0
收藏

自己搭建的服务器 用那种占用资源少 谢谢各位大神

收藏
点赞
0
个赞
共12条回复 最后由jfkulk4734p8回复于2022-05
#13追星逐月的家回复于2018-08

api更底层些,sdk更简单些

0
#12daipeng_hi回复于2017-12

sdk我理解就是基于api的一个封装吧,仅仅是方便相应的开发语言进行调用;还会涉及实现方案不一致吗?

0
#11我是段涛涛回复于2017-12

请问OCR的涂抹翻译功能给开放出来了吗

 

0
#10荒墨丶迷失回复于2017-12
#9 任意64回复
谢谢了 我在看看sdk源码

你会发现。sdk封装的的就是api。hhh

0
#9任意64回复于2017-12

谢谢了 我在看看sdk源码

0
#8用户已被禁言回复于2017-12
#6 任意64回复
哪位看看怎么避免io操作 用api也行  

传递图片的网络路径是可以不用你本地io资源的。但是那只是个别接口支持。

不管sdk还是api如果是图片本地路径或者图片的base64数据。都是需要io进行操作。反正支持url接口就个别几个。

https://github.com/Baidu-AIP/java-sdk/

sdk源码你可以自行查看

1
#7用户已被禁言回复于2017-12
#6 任意64回复
哪位看看怎么避免io操作 用api也行  

都避免不了操作io。除非你的base64是别的地方传递给你的。你是因为操作io对你的服务器有什么影响吗?出于什么考虑呢?

0
#6任意64回复于2017-12

哪位看看怎么避免io操作 用api也行

 

0
#5任意64回复于2017-12





 

package com.cn.until;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

 


@WebServlet("/imageSerlvet")
public class imageSerlvet extends HttpServlet {
private static final long serialVersionUID = 1L;


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         doPost(request, response);
     }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024 * 500);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(1024 * 1024 * 5);
try {
List  items = upload.parseRequest(request);
// 2. 遍历 items:
for (FileItem item : items) {
// 文件名
String fileName = item.getName();
InputStream in = item.getInputStream();
byte[] buffer = new byte[1024];
int len = 0;

/*
* 用到了io操作浪费资源  是不是可以不用写io 要怎么写
*/
OutputStream out = new FileOutputStream(fileName);
                   
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.close();
in.close();
System.out.println(Sample.get(fileName).toString());

}


} catch (Exception e) {
e.printStackTrace();
}
}
}

 

 

package com.cn.until;


import java.util.HashMap;


import org.json.JSONObject;


import com.baidu.aip.ocr.AipOcr;


public class Sample {
//设置APPID/AK/SK
    public static final String APP_ID = "10570384";
    public static final String API_KEY = "74ik5L8ZlazExSPdodV3G2ZQ";
    public static final String SECRET_KEY = "eqwGnR5CYQb8aUGaI2dAxQhAqHM10Giu";
  
    public static JSONObject get(String image) {
        AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);
        // 调用接口
        String path = image;
        JSONObject res = client.basicGeneral(path, new HashMap());
return res;
    }
   
}

 

0
#4任意64回复于2017-12

我的意思是自己搭建的服务器 用sdk的话是不是需要io操作先写入图片 再进行处理 占用了io资源

而api请求是不是不需要io

0
#3用户已被禁言回复于2017-12

api也占资源。看你是所有模块都用到了。还是只用一个模块。只用一个模块。那需要下载百度的3个工具类代码。占资源8kb。

但是加上你自己调用要必须用到的URL地址。如果只是单个 加起来也就 10kb就够一个模块调用了。

 

 

1
#2用户已被禁言回复于2017-12

你说的是占什么资源?反正你写代码 写一个字母也是要占资源的。

sdk所占资源74kb。

1
TOP
切换版块