将一段 HttpClient 写的代码,改用OkHttp3来实现 40C

以下是HttpClient的代码,功能就是向一个url发送get请求,并携带一个.p12格式的证书文件

 package com.sinnk.web.module.weixin.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import javax.net.ssl.SSLContext;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;

public class Test {

    public static void main(String[] args) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException, KeyManagementException, UnrecoverableKeyException {
        // TODO Auto-generated method stub
        KeyStore keyStore  = KeyStore.getInstance("PKCS12");
        FileInputStream instream = new FileInputStream(new File("C:\\apiclient_cert.p12"));
        try {
            keyStore.load(instream, "1499761822".toCharArray());
        } finally {
            instream.close();
        }

        // Trust own CA and all self-signed certs
        SSLContext sslcontext = SSLContexts.custom()
                .loadKeyMaterial(keyStore, "1499761822".toCharArray())
                .build();
        // Allow TLSv1 protocol only
        @SuppressWarnings("deprecation")
        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
                sslcontext,
                new String[] { "TLSv1" },
                null,
                SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
        CloseableHttpClient httpclient = HttpClients.custom()
                .setSSLSocketFactory(sslsf)
                .build();
        try {

            HttpGet httpget = new HttpGet("https://api.mch.weixin.qq.com/secapi/pay/refund");

            System.out.println("executing request" + httpget.getRequestLine());

            CloseableHttpResponse response = httpclient.execute(httpget);
            try {
                HttpEntity entity = response.getEntity();

                System.out.println("----------------------------------------");
                System.out.println(response.getStatusLine());
                if (entity != null) {
                    System.out.println("Response content length: " + entity.getContentLength());
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(entity.getContent()));
                    String text;
                    while ((text = bufferedReader.readLine()) != null) {
                        System.out.println(text);
                    }

                }
                EntityUtils.consume(entity);
            } finally {
                response.close();
            }
        } finally {
            httpclient.close();
        }

    }

}

要求用OkHttp3来实现。

1个回答

public class PersistentCookieStore {

private static final String LOG_TAG = "PersistentCookieStore";

private static final String COOKIE_PREFS = "Cookies_Prefs";

private final Map<String, ConcurrentHashMap<String, Cookie>> cookies;  
private final SharedPreferences cookiePrefs;  


public PersistentCookieStore(Context context) {  
    cookiePrefs = context.getSharedPreferences(COOKIE_PREFS, 0);  
    cookies = new HashMap<String, ConcurrentHashMap<String, Cookie>>();  

    //将持久化的cookies缓存到内存中 即map cookies  
    Map<String, ?> prefsMap = cookiePrefs.getAll();  
    for (Map.Entry<String, ?> entry : prefsMap.entrySet()) {  
        String[] cookieNames = TextUtils.split((String) entry.getValue(), ",");  
        for (String name : cookieNames) {  
            String encodedCookie = cookiePrefs.getString(name, null);  
            if (encodedCookie != null) {  
                Cookie decodedCookie = decodeCookie(encodedCookie);  
                if (decodedCookie != null) {  
                    if (!cookies.containsKey(entry.getKey())) {  
                        cookies.put(entry.getKey(), new ConcurrentHashMap<String, Cookie>());  
                    }  
                    cookies.get(entry.getKey()).put(name, decodedCookie);  
                }  
            }  
        }  
    }  
}  

protected String getCookieToken(Cookie cookie) {  
    return cookie.name() + "@" + cookie.domain();  
}  

public void add(HttpUrl url, Cookie cookie) {  
    String name = getCookieToken(cookie);  

    //将cookies缓存到内存中 如果缓存过期 就重置此cookie  
    if (!cookie.persistent()) {  
        if (!cookies.containsKey(url.host())) {  
            cookies.put(url.host(), new ConcurrentHashMap<String, Cookie>());  
        }  
        cookies.get(url.host()).put(name, cookie);  
    } else {  
        if (cookies.containsKey(url.host())) {  
            cookies.get(url.host()).remove(name);  
        }  
    }  

    //讲cookies持久化到本地  
    SharedPreferences.Editor prefsWriter = cookiePrefs.edit();  
    prefsWriter.putString(url.host(), TextUtils.join(",", cookies.get(url.host()).keySet()));  
    prefsWriter.putString(name, encodeCookie(new SerializableOkHttpCookies(cookie)));  
    prefsWriter.apply();  
}  

public List<Cookie> get(HttpUrl url) {  
    ArrayList<Cookie> ret = new ArrayList<Cookie>();  
    if (cookies.containsKey(url.host()))  
        ret.addAll(cookies.get(url.host()).values());  
    return ret;  
}  

public boolean removeAll() {  
    SharedPreferences.Editor prefsWriter = cookiePrefs.edit();  
    prefsWriter.clear();  
    prefsWriter.apply();  
    cookies.clear();  
    return true;  
}  

public boolean remove(HttpUrl url, Cookie cookie) {  
    String name = getCookieToken(cookie);  

    if (cookies.containsKey(url.host()) && cookies.get(url.host()).containsKey(name)) {  
        cookies.get(url.host()).remove(name);  

        SharedPreferences.Editor prefsWriter = cookiePrefs.edit();  
        if (cookiePrefs.contains(name)) {  
            prefsWriter.remove(name);  
        }  
        prefsWriter.putString(url.host(), TextUtils.join(",", cookies.get(url.host()).keySet()));  
        prefsWriter.apply();  

        return true;  
    } else {  
        return false;  
    }  
}  

public List<Cookie> getCookies() {  
    ArrayList<Cookie> ret = new ArrayList<Cookie>();  
    for (String key : cookies.keySet())  
        ret.addAll(cookies.get(key).values());  

    return ret;  
}  

/** 
 * cookies 序列化成 string 
 * 
 * @param cookie 要序列化的cookie 
 * @return 序列化之后的string 
 */  
protected String encodeCookie(SerializableOkHttpCookies cookie) {  
    if (cookie == null)  
        return null;  
    ByteArrayOutputStream os = new ByteArrayOutputStream();  
    try {  
        ObjectOutputStream outputStream = new ObjectOutputStream(os);  
        outputStream.writeObject(cookie);  
    } catch (IOException e) {  
        Log.d(LOG_TAG, "IOException in encodeCookie", e);  
        return null;  
    }  

    return byteArrayToHexString(os.toByteArray());  
}  

/** 
 * 将字符串反序列化成cookies 
 * 
 * @param cookieString cookies string 
 * @return cookie object 
 */  
protected Cookie decodeCookie(String cookieString) {  
    byte[] bytes = hexStringToByteArray(cookieString);  
    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);  
    Cookie cookie = null;  
    try {  
        ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);  
        cookie = ((SerializableOkHttpCookies) objectInputStream.readObject()).getCookies();  
    } catch (IOException e) {  
        Log.d(LOG_TAG, "IOException in decodeCookie", e);  
    } catch (ClassNotFoundException e) {  
        Log.d(LOG_TAG, "ClassNotFoundException in decodeCookie", e);  
    }  

    return cookie;  
}  

/** 
 * 二进制数组转十六进制字符串 
 * 
 * @param bytes byte array to be converted 
 * @return string containing hex values 
 */  
protected String byteArrayToHexString(byte[] bytes) {  
    StringBuilder sb = new StringBuilder(bytes.length * 2);  
    for (byte element : bytes) {  
        int v = element & 0xff;  
        if (v < 16) {  
            sb.append('0');  
        }  
        sb.append(Integer.toHexString(v));  
    }  
    return sb.toString().toUpperCase(Locale.US);  
}  

/** 
 * 十六进制字符串转二进制数组 
 * 
 * @param hexString string of hex-encoded values 
 * @return decoded byte array 
 */  
protected byte[] hexStringToByteArray(String hexString) {  
    int len = hexString.length();  
    byte[] data = new byte[len / 2];  
    for (int i = 0; i < len; i += 2) {  
        data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4) + Character.digit(hexString.charAt(i + 1), 16));  
    }  
    return data;  
}}  

[java] view plain copy
public class SerializableOkHttpCookies implements Serializable {

private transient final Cookie cookies;  
private transient Cookie clientCookies;  

public SerializableOkHttpCookies(Cookie cookies) {  
    this.cookies = cookies;  
}  

public Cookie getCookies() {  
    Cookie bestCookies = cookies;  
    if (clientCookies != null) {  
        bestCookies = clientCookies;  
    }  
    return bestCookies;  
}  

private void writeObject(ObjectOutputStream out) throws IOException {  
    out.writeObject(cookies.name());  
    out.writeObject(cookies.value());  
    out.writeLong(cookies.expiresAt());  
    out.writeObject(cookies.domain());  
    out.writeObject(cookies.path());  
    out.writeBoolean(cookies.secure());  
    out.writeBoolean(cookies.httpOnly());  
    out.writeBoolean(cookies.hostOnly());  
    out.writeBoolean(cookies.persistent());  
}  

private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {  
    String name = (String) in.readObject();  
    String value = (String) in.readObject();  
    long expiresAt = in.readLong();  
    String domain = (String) in.readObject();  
    String path = (String) in.readObject();  
    boolean secure = in.readBoolean();  
    boolean httpOnly = in.readBoolean();  
    boolean hostOnly = in.readBoolean();  
    boolean persistent = in.readBoolean();  
    Cookie.Builder builder = new Cookie.Builder();  
    builder = builder.name(name);  
    builder = builder.value(value);  
    builder = builder.expiresAt(expiresAt);  
    builder = hostOnly ? builder.hostOnlyDomain(domain) : builder.domain(domain);  
    builder = builder.path(path);  
    builder = secure ? builder.secure() : builder;  
    builder = httpOnly ? builder.httpOnly() : builder;  
    clientCookies =builder.build();  
}  

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Spring Boot2 中如何使用OKHTTP3实现对浏览器的模拟?

我使用Servlet+OKHTTP实现了对浏览器的模拟,但是使用Spring Boot2+Spring MVC+OKHTTP的时候,访问总是失败,而log打印的Cookie等信息和第一种方法一模一样,因为我对Spring MVC的底层原理不是十分清楚,所以我不知道它做了什么样的处理?可是,Spring MVC对访问服务器的请求会处理,对服务器发出的HTTP请求也会处理吗?求指点!

关于OKHTTP 的问题请教

请教一个问题,如下代码 ``` public class OKHttpUtil { public static String contentType="text/html; charset=UTF-8"; public static int timeOunt = 30; public static OkHttpClient client = new OkHttpClient.Builder().readTimeout(timeOunt, TimeUnit.SECONDS).build(); public static String sendPost(String url, Map<String, String> paramMap){ FormBody.Builder builder = new FormBody.Builder(); Iterator it = paramMap.keySet().iterator(); while (it.hasNext()){ String key = it.next().toString(); builder.add(key,paramMap.get(key)); } Request request = new Request.Builder().url(url).addHeader("Content-Type",contentType).post(builder.build()).build(); Response response = null; try { response = client.newCall(request).execute(); return response.body().string(); } catch (IOException e) { e.printStackTrace(); } return null; } /** * 异步发送 * @param url * @param paramMap * @param callback */ public static void sendPostAsyn(String url, Map<String, String> paramMap ,Callback callback){ FormBody.Builder builder = new FormBody.Builder(); Iterator it = paramMap.keySet().iterator(); while (it.hasNext()){ String key = it.next().toString(); builder.add(key,paramMap.get(key)); } Request request = new Request.Builder().url(url).addHeader("Content-Type",contentType).post(builder.build()).build(); Call call = client.newCall(request); call.enqueue(callback); } } ``` 第一次使用这个框架不是很了解,现在有2个疑问,想请教下对这个框架比较了解的朋友! 第一个疑问: 使用一个OkHttpClient 对象 在高并发时,能否即发送同步请求,又发布异步请求。如,使用 OKHttpUtil.sendPostAsyn 发送异步后,在调用OKHttpUtil。sendPost 发送同步,发送使用同一个OkHttpClient 对象。 第二个疑问 OkHttpClient 对象每次发送都要new ,还是可以像代码中初始化一个静态的一直使用

okhttp 为何是tcp连接

在对某app进行抓包时发现采用的okhttp 但是连接方式时 三个tlsv1.2 加上一个tcp包 长连接 请问有没有方法获取到加密方式 ![图片说明](https://img-ask.csdn.net/upload/201811/09/1541749088_845955.png) ![图片说明](https://img-ask.csdn.net/upload/201811/09/1541749103_876973.png) ![图片说明](https://img-ask.csdn.net/upload/201811/09/1541749115_530971.png) ![图片说明](https://img-ask.csdn.net/upload/201811/09/1541749123_66863.png) 调用okhttp 并未发现什么加密函数 但是抓包时发现数据已加密 请问是正常的tls加密 还是 未分析到的加密 数据包开头貌似是17

单例Okhttp能像单例httpclient一样不需要我们手动去维护cookie吗?

android 6.0sdk移除了apache的httpclient,volley必须得手动维护cookie,网上有文章说Okhttp支持cookies维护,但我有个疑问,单例Okhttp能像单例httpclient一样不需要我们手动去维护cookie吗?多谢解答

httpclient 动态网页获取

public static String getHtmlByUrl(String url){ String html = null; HttpClient httpClient = new DefaultHttpClient();//创建httpClient对象 HttpGet httpget = new HttpGet(url);//以get方式请求该URL try { HttpResponse responce = httpClient.execute(httpget);//得到responce对象 int resStatu = responce.getStatusLine().getStatusCode();//返回码 if (resStatu==HttpStatus.SC_OK) {//200正常 其他就不对 //获得相应实体 HttpEntity entity = responce.getEntity(); System.out.println(Integer.toString(resStatu)); if (entity!=null) { html = EntityUtils.toString(entity);//获得html源代码 } } } catch (Exception e) { System.out.println("访问【"+url+"】出现异常!"); e.printStackTrace(); } finally { httpClient.getConnectionManager().shutdown(); } //System.out.println(html); return html; } 上述代码只能抓静态网页数据 麻烦看下上面代码怎么改才能获取动态网页数据啊

OkHttp使用post方式提交multipart/form-data

之前使用HttpClient,但是由于AS的问题,放弃了,改用OkHttp,但还是出现提交了表单但是没有出现正常的成功跳转, 同时返回状态码却是200 OK;还有就是,我的post方法指定的url是一个get方式提交数据的url,然后在这个url的基础上 再提交post数据,截图如下: 这是multipart/form-data: ![图片说明](https://img-ask.csdn.net/upload/201605/09/1462773887_889400.png) 这是我的代码: ![图片说明](https://img-ask.csdn.net/upload/201605/09/1462773914_754910.png)

OkHttp能否获取到重定向后的URL?

目前写个小应用,需要模拟登录,但是登录后服务器会出现302,重定向一个Url。采用的是Okhttp的方式进行POST请求,如何能够获得重定向的url? 客户端POST请求后返回200响应吗,并直接将重定向后的网页返回来 本来想通过response.headers("Location");获取重定向url,但是获取不到,得到的headers全是重定向后的内容,其中并没有Location

关于httpclient访问提转页面的实现

我使用httpclient访问路径 http://localhost:8078/Test/test1111.htm 并打印该页面的html代码 但该test111.htm的代码是跳转到别的页面,如: [code="html"]<html> <head> <script> function test(){ location.href = "http://www.baidu.com"; } </script> </head> <body onload = "test();"> </body> </html>[/code] 其实httpclient取出的代码就是该test1111.htm的代码,但该页面其实是直接跳转到www.baidu.com页面 我如果想去www.baidu.com页面的代码该如何实现呢,当然我可以直接使用httpclient访问 www.baidu.com,但在实际运用过程中跳转到那个页面的路径是被加密的,我无法取得,在该例子中就是我只知道我访问的页面会跳转至其他页面,但我无法取得它跳转到得就是www.baidu.com,这个时候我希望httpclient能够延迟一下访问,当然这个只是我的意思,不知道能否实现,而达到取得跳转后页面的html代码,请各位高人给下指点,谢谢,补上httpclient访问的简单代码段,提供大家调试,谢谢 [code="java"]private static void test() throws HttpException, IOException{ HttpClient httpclient = new HttpClient(); httpclient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, CONTENT_CHARSET); GetMethod getMethod = new GetMethod("http://localhost:8078/Test/test1111.htm"); int statusCode = httpclient.executeMethod(getMethod); String responseString = new String(getMethod.getResponseBodyAsString().getBytes("gbk")); System.out.println(responseString); }[/code] 各位知道的老师请给予指点,感激不尽,分数不多,没办法 [b]问题补充:[/b] 你说执行html中的js代码 问题就在于对方对该js代码采取了压缩,加密...等等很多操作 甚至有自己一套验证方式,想跟踪js代码来获取最后的动态路径是很困难的 有没有其他什么办法呢 [b]问题补充:[/b] 自己解决了 用jdic 不过lovewhzlq的httputil也应该是一个不错的选择 只是没有详细去研究 谢谢了

HTTPClient代码中的CURL命令

<div class="post-text" itemprop="text"> <p>I'm planning on working with a text uploading site, <a href="http://textuploader.com/" rel="nofollow">http://textuploader.com/</a>, but I don't seem to understand this. I probably haven't looked hard enough, but that's not the point. What I'm really looking for is just simply how to do these commands, or just how to use "<a href="http://hc.apache.org/httpcomponents-client-ga/" rel="nofollow">HTTPClient</a>" to do these sorts of things. The site with all of the commands and information is <a href="http://textuploader.com/developers/getstarted" rel="nofollow">here</a>. Also, just for convenience, I should leave the most important ones for me, in this post:</p> <pre><code>POST: /posts This will allow you to post to your account. { "Title": "Sample Title", "Content": "Post body goes here.", "Type": "public" } Example: curl -X POST "http://api.textuploader.com/v1/posts" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-TextUploader-API-Key: your-api-key-here" \ -v \ -d '{"title": "Sample Title", "content": "Post body goes here.", "type": "public"}' And this: GET: /posts/[shortcode] This method will return the complete body of the requested shortcode. </code></pre> </div>

HTTPClient可否保持一个会话,就好像浏览器自动跳转、或执行JS

在写一个网页获取的java程序时,用到了HTTPClient包,现在出现这样的问题,可能有一些网站防止获取,采用了一些跳转操作,用httpclient提交了请求后,返回的状态码是200,但这个网页中又加入了一些JS代码,比如: window.setTimeout('document.getElementById("formxh4t").submit();',3000); 这样也完成了页面的跳转,在浏览器中是可以自动的跳转,但HTTPClient就不行了,我想的是有没有什么方法可以跟踪住这个会话,就想在浏览器中一样。 当然,要是有别的什么jar包可以实现这个功能化,希望能推荐一些,谢谢!

[Java]请问springMVC这段代码啥意思,关于httpclient的

这是一个controller方法的尾巴,方法上的返回值是void 请问这个注解中的属性和下面那段代码表示的什么意思 “JsonParam”和“cfg.getJsonParam()”表示的是项目里的一个属性类,不用在意 ``` @PostMapping(produces = MediaType.APPLICATION_JSON_VALUE) public void upload(。。。。。。。。 ``` ``` HttpHeaders headers = new HttpHeaders(); MediaType mediaType = new MediaType("application", "merge-patch+json"); headers.setContentType(mediaType); HttpEntity<JsonParam> entity = new HttpEntity<>(cfg.getJsonParam(), headers); HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); RestTemplate restTemplate = new RestTemplate(requestFactory); ``` 为了看的方便我把包放出来 ``` import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; ```

java的httpclient能实现linux中的curl -u命令吗?

java的httpclient能实现linux中的curl -u命令吗?如何实现

寻求HttpClient无法写Cookie的解决方法

问题描述: 公司申请了一个超短域名,假设改域名为 a.cn,有多个二级域名 比如 www.a.cn; file.a.cn;这些二级域名都有一个共同的功能, 就是要写cookie,而且这个cookie要在a.cn内共享。根据短域名写cookie的可行性,只能把写Cookie的功能统一交给a.cn这台服务器来执行才可以写成功。所以我现在如果要在www.a.cn服务器上写cookie(可供a.cn共享的Cookie),就只能借助HttpClient 在a.cn服务器上有一个Servlet,用来负责写Cookie,www.a.cn这台服务器上的应用程序借助HttpClient调用a.cn上的Servlet 一切执行都没有问题,但是就是Cookie无法写入文件中。如果在IE中直接调用那个Servlet,这可以把Cookie成功写入文件。 假如Servlet的完整请求地址为 http://a.cn/servlet a.an 服务器负责写Cookie的代码如下 [code="java"] public class CookieServlet extends HttpServlet { public CookieServlet() { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Cookie cookie = new Cookie("CookieName", "haha"); cookie.setMaxAge(100000); cookie.setPath("/"); //这个不需要设置 //cookie.setDomain("a.cn"); response.addCookie(cookie); } public void init() throws ServletException { } } [/code] www.a.cn的请求代码如下 [code="java"] public class Test { public static void main(String args[]) { String cookieUrl = "http://a.cn/servlet"; String result = HttpUtils.executeGetMethod(cookieUrl); //其余代码省略,这里执行完后,并没有得到理想的结果。cookie没有写成功,如果 //在IE浏览器中执行 执行http://a.cn/servlet ,则可以成功写cookie } [/code] [code="java"] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.apache.commons.httpclient.Cookie; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HostConfiguration; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpConnectionManager; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.cookie.CookiePolicy; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class HttpUtils { private static MultiThreadedHttpConnectionManager httpManager; private static final Log log = LogFactory.getLog(HttpUtils.class); public static HttpConnectionManager getHttpManager() { if (httpManager == null) { httpManager = new MultiThreadedHttpConnectionManager(); httpManager.getParams().setConnectionTimeout(3000); } return httpManager; } public static HttpClient createHttpClient() { HttpClient client = new HttpClient(getHttpManager()); return client; } public static String executeGetMethod(String url) { HttpMethod method = new GetMethod(url.toString()); return getHttpResult(method); } public static String executePostMethod(String url, Map<String, String> map) { PostMethod method = new InnerPostMethod(url); method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); if (map == null || map.size() == 0) { throw new IllegalArgumentException("map must be not null"); } NameValuePair[] data = new NameValuePair[map.size()]; Set<Map.Entry<String, String>> set = map.entrySet(); Iterator<Map.Entry<String, String>> it = set.iterator(); int i = 0; while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); data[i++] = new NameValuePair(entry.getKey(), entry.getValue()); } method.setRequestBody(data); return getHttpResult(method); } private static String getHttpResult(HttpMethod method) { InputStream is = null; try { HttpClient client = HttpUtils.createHttpClient(); int stat = client.executeMethod(method); if (stat != HttpStatus.SC_OK) { return null; } is = method.getResponseBodyAsStream(); BufferedReader reader = new BufferedReader(new InputStreamReader( is, "utf-8")); StringBuilder builder = new StringBuilder(); String tmp = null; while ((tmp = reader.readLine()) != null) { builder.append(tmp); } // Cookie cks[] = client.getState().getCookies(); // if (cks != null) { // for (Cookie c : cks) { // System.out.println(c.getName()+"\t"+c.getValue()); // } // } return builder.toString(); } catch (HttpException e) { return null; } catch (IOException e) { return null; } finally { method.releaseConnection(); try { if (is != null) { is.close(); } } catch (IOException e) { e.printStackTrace(); } } } static class InnerPostMethod extends PostMethod { public InnerPostMethod(String url) { super(url); } @Override protected String getContentCharSet(Header contentheader) { return "UTF-8"; } } } [/code] 希望有遇到过类似问题的高手,给予帮助,谢谢

怎么使用httpclient实现http接口调用实例

接口地址: https://data2.contec365.com/login.php 请求方式: post 需要传递参数:![图片说明](https://img-ask.csdn.net/upload/201606/29/1467194093_742151.png) 参数内容为xml格式![图片说明](https://img-ask.csdn.net/upload/201606/29/1467194080_167521.png) 输出![图片说明](https://img-ask.csdn.net/upload/201606/29/1467194221_53039.png) 格式为xml格式:![图片说明](https://img-ask.csdn.net/upload/201606/29/1467194307_683270.png) code: 为提示信息 文档就是这样的,我应该怎么写,能不能写个示例,还有 servlet怎么调用,给点建议,不胜感激,谢谢,困扰我好多天了,希望能给出代码,因为我没写,也上网查了都找不到合适的,所以希望给出代码,谢谢

java的httpClient类调用https接口时,可以不写SSL相关代码,直接用跟调用http接口时一样的代码吗?

最近看到代码中别人封装的http请求类,请求第三方https的接口时,没有写任何SSL相关的代码。https不是需要做SSL的操作或者进行跳过证书验证吗?但是我看代码中没有一个地方有这个操作的,而且居然还访问正常。https可以用访问http的方式访问吗?![图片说明](https://img-ask.csdn.net/upload/201911/06/1573055490_435016.jpg) ![图片说明](https://img-ask.csdn.net/upload/201911/06/1573055508_589351.jpg)上面是他写的代码

org.apache.http.client.HttpClient 怎么发送一段xml到服务器啊

注意: 这里的httpclient不是common包下的 是org.apache.http.client.HttpClient 1 org.apache.http.client.HttpClient 有没有注入setQueryString("")这样的方法呢. 2 或者有没其他方法来发送一段xml文件 3 org.apache.http.client.HttpClient 可不可以获取httprequest 如果可以获取又应该怎么获取呢 [b]问题补充:[/b] 谢谢 yuankai 只是你提供的代码 其实是基于common包下的httpclient 不是我所要的。谢谢。 [b]问题补充:[/b] common包下提交请求的两个对象:PostMethod GetMethod 我想要的提交请求的两个对象的是 HttpPost HttpGet

使用HttpClient进行登录验证

<div class="post-text" itemprop="text"> <p>I am trying to send a POST request to a php file and when the user is asked for login information, if wrong, it prints the json message from the php file and if right, it allows user to login. However, my application crashes, giving a NetworkOnThreadMainException pointing errors to three lines.</p> <pre><code> HttpResponse response=httpClient.execute(httpPost); public class LoginActivity extends ActionBarActivity { login(); </code></pre> <p>So how can i make this possible? This is some part of the code I have written:</p> <pre><code>public class LoginActivity extends ActionBarActivity { EditText et, et2; ImageButton ib5; String name,pwd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); et = (EditText) findViewById(R.id.editText); et2 = (EditText) findViewById(R.id.editText2); ib5 = (ImageButton) findViewById(R.id.imageButton5); name=et.getText().toString(); pwd=et2.getText().toString(); final LoginActivity loginActivity=null; ib5.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //login(); new DownloadFilesTask(loginActivity,name,pwd).doInBackground(); } }); } public void login() { new LoginTask(this, et.getText().toString(), et2.getText().toString()); } private class LoginTask { public LoginTask(LoginActivity loginActivity, String name, String pwd) { } } void navigatetoMainActivity() { Intent homeIntent = new Intent(getApplicationContext(), MainActivity.class); homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(homeIntent); } void InvalidToast(){ Toast.makeText(getApplicationContext(), "Please enter valid name and password", Toast.LENGTH_LONG).show(); } void EmptyToast(){ Toast.makeText(getApplicationContext(), "Please fill the form, don't leave any field blank", Toast.LENGTH_LONG).show(); } } </code></pre> <p>DownloadFilesTask.java</p> <pre><code>public class DownloadFilesTask extends AsyncTask&lt;String, String, String&gt; { private String name, pwd; private LoginActivity loginActivity; public DownloadFilesTask(LoginActivity loginActivity,String name, String pwd){ this.loginActivity=loginActivity; this.name=name; this.pwd=pwd; } @Override protected String doInBackground(String... strings) { HttpClient httpClient=new DefaultHttpClient(); HttpPost httpPost=new HttpPost("login.php"); List&lt;NameValuePair&gt; nameValuePairs=new ArrayList&lt;NameValuePair&gt;(2); String result=null; nameValuePairs.add(new BasicNameValuePair("name", name)); nameValuePairs.add(new BasicNameValuePair("password", pwd)); try { httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } HttpResponse response= null; try { response = httpClient.execute(httpPost); //error is given here } catch (IOException e) { e.printStackTrace(); } HttpEntity entity=response.getEntity(); InputStream instream= null; try { instream = entity.getContent(); } catch (IOException e) { e.printStackTrace(); } result=convertStreamToString(instream); try { instream.close(); } catch (IOException e) { e.printStackTrace(); } if (Utility.isNotNull(name) &amp;&amp; Utility.isNotNull(pwd)) { RequestParams params = new RequestParams(); if (Utility.validate(name, pwd)) { params.put("username", name); params.put("password", pwd); onPostExecute(); } else { loginActivity.InvalidToast(); } } else { loginActivity.EmptyToast(); } return result; } private String convertStreamToString(InputStream instream) { BufferedReader reader=new BufferedReader(new InputStreamReader(instream)); StringBuilder sb=new StringBuilder(); String line=null; try { while ((line=reader.readLine())!=null){ sb.append(line + " "); } } catch (IOException e) { e.printStackTrace(); }finally{ try { instream.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } protected void onPostExecute(){ loginActivity.navigatetoMainActivity(); } private static class Utility { static Pattern pattern; static Matcher matcher; static Pattern pattern1; static Matcher matcher1; static String NAME_PATTERN="SuperBoise"; static String PWD_PATTERN="qwerty"; public static boolean validate(String name,String pwd){ pattern=Pattern.compile(NAME_PATTERN); pattern1=Pattern.compile(PWD_PATTERN); matcher=pattern.matcher(name); matcher1=pattern1.matcher(pwd); return matcher.matches()&amp;&amp; matcher1.matches(); } public static boolean isNotNull(String name) { return name!=null &amp;&amp; name.trim().length()&gt;0 ? true: false; } } } </code></pre> </div>

httpClient 3如何session会话保持?

问题场景: 通过httpClient请求同一门户的接口地址,因为登录后和未登录的时候返回的数据不一样。所以当用户在门户上登录的情况下,访问接口返回的数据也应该是要登录口的数据。现在返回的都是未登录的情况。‘请问大神们此问题如何解决。 代码如下: String url = "http://192.168.41.56/portal/480/home/wap/xqy/ljjk/dbjqbf/index.jsp"; String result = ""; HttpClient client = new HttpClient(); //client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); HttpConnectionManagerParams managerParams = client.getHttpConnectionManager().getParams(); // 设置连接超时时间(单位毫秒) managerParams.setConnectionTimeout(500); managerParams.setSoTimeout(5000); GetMethod getMethod=new GetMethod(); URI base = new URI(url,false); getMethod.setURI(new URI(base,"",false)); int resultCode = client.executeMethod(getMethod); if(resultCode == 200 ) { byte[] body=getMethod.getResponseBody(); if(body!=null && body.length>0){ result=new String(body,"UTF-8"); System.out.println(result); }else{ System.out.println(" 无返回值 url ="+url); } }else{ System.out.println(" HTTP 返回异常 url ="+url +", resultCode= "+ resultCode); } getMethod.releaseConnection();

使用httpclient代理ip然后通过百度搜索一个词进入一个页面

就是利用代理ip来模拟百度搜索,然后返回这个页面然后记录!这个可以实现吗?!具体代码是什么啊!? 还有代码的意义是什么?

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:csdn590)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

Windows版YOLOv4目标检测实战:训练自己的数据集

课程演示环境:Windows10; cuda 10.2; cudnn7.6.5; Python3.7; VisualStudio2019; OpenCV3.4 需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:训练自己的数据集》 课程链接:https://edu.csdn.net/course/detail/28745 YOLOv4来了!速度和精度双提升! 与 YOLOv3 相比,新版本的 AP (精度)和 FPS (每秒帧率)分别提高了 10% 和 12%。 YOLO系列是基于深度学习的端到端实时目标检测方法。本课程将手把手地教大家使用labelImg标注和使用YOLOv4训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv4使用AlexyAB/darknet,在Windows系统上做项目演示。包括:安装软件环境、安装YOLOv4、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算)和先验框聚类分析。还将介绍改善YOLOv4目标检测性能的技巧。 除本课程《Windows版YOLOv4目标检测实战:训练自己的数据集》外,本人将推出有关YOLOv4目标检测的系列课程。请持续关注该系列的其它视频课程,包括: 《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》 《Windows版YOLOv4目标检测实战:中国交通标志识别》 《Windows版YOLOv4目标检测:原理与源码解析》

lena全身原图(非256*256版本,而是全身原图)

lena全身原图(非256*256版本,而是全身原图) lena原图很有意思,我们通常所用的256*256图片是在lena原图上截取了头部部分的256*256正方形得到的. 原图是花花公子杂志上的一个

快速入门Android开发 视频 教程 android studio

这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

Java调用微信支付

Java 使用微信支付 一. 准备工作 1.

汽车租赁管理系统需求分析规格说明书

汽车租赁管理系统需求分析规格说明书,这只是一个模板,如果有不会的可以借鉴一下,还是蛮详细的。。。。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

程序员的算法通关课:知己知彼(第一季)

【超实用课程内容】 程序员对于算法一直又爱又恨!特别是在求职面试时,算法类问题绝对是不可逃避的提问点!本门课程作为算法面试系列的第一季,会从“知己知彼”的角度,聊聊关于算法面试的那些事~ 【哪些人适合学习这门课程?】 求职中的开发者,对于面试算法阶段缺少经验 想了解实际工作中算法相关知识 在职程序员,算法基础薄弱,急需充电 【超人气讲师】 孙秀洋&nbsp;| 服务器端工程师 硕士毕业于哈工大计算机科学与技术专业,ACM亚洲区赛铜奖获得者,先后在腾讯和百度从事一线技术研发,对算法和后端技术有深刻见解。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27272 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程无限观看时长,但是大家可以抓紧时间学习后一起讨论哦~

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

Python入门视频精讲

Python入门视频培训课程以通俗易懂的方式讲解Python核心技术,Python基础,Python入门。适合初学者的教程,让你少走弯路! 课程内容包括:1.Python简介和安装 、2.第一个Python程序、PyCharm的使用 、3.Python基础、4.函数、5.高级特性、6.面向对象、7.模块、8.异常处理和IO操作、9.访问数据库MySQL。教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

Java62数据提取代码

利用苹果手机微信下面的wx.data文件提取出62数据,通过62可以实现不同设备直接登陆,可以通过文件流的方式用脚本上传到服务器进行解析

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

2018年全国大学生计算机技能应用大赛决赛 大题

2018年全国大学生计算机技能应用大赛决赛大题,程序填空和程序设计(侵删)

Lena图像处理测试专业用图,高清完整全身原图

Lena图像处理测试专业用图,高清完整全身原图,该图片很好的包含了平坦区域、阴影和纹理等细节,这些都有益于测试各种不同的图像处理算法。它是一幅很好的测试照片!其次,由于这是一个非常有魅力女人的照片。

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

verilog实现地铁系统售票

使用 verilog 实现地铁售票

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

获取Linux下Ftp目录树并逐步绑定到treeview

在linux下抓取目录树,双击后获取该节点子节点(逐步生成)。另外有两个类,一个是windows下的(一次性获取目录树),一个是linux下的(足部获取目录树)

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序 实例汇总 完整项目源代码

微信小程序 实例汇总 完整项目源代码

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯。 本系统控制六层电梯, 采用集选控制方式。 为了完成设定的控制任务, 主要根据电梯输入/输出点数确定PLC 的机型。 根据电梯控制的要求,

相关热词 c#分级显示数据 c# 不区分大小写替换 c#中调用就java c#正则表达式 验证小数 c# vscode 配置 c#三维数组能存多少数据 c# 新建excel c#多个文本框 c#怎么创建tcp通讯 c# mvc 电子病例
立即提问