Spring Boot2 中如何使用OKHTTP3实现对浏览器的模拟?

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

1个回答

找到问题的原因了,因为我对Spring Boot对静态资源的处理不太清楚,所以前端传过来的数据是有问题的,也就是后台代码是没有问题的。哎,半瓶水
“假”全栈。。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
使用OKhttp3将图像上传到服务器失败

<div class="post-text" itemprop="text"> <p>我使用OKhttp 3来处理网络请求,并试图将图像上传到服务器。这是我试过的方式,但不管用。哪里出错了?</p> <pre><code>public void upload(String url, String filePath) throws java.io.IOException { java.io.File file = new File(filePath); okhttp3.OkHttpClient client = new okhttp3.OkHttpClient(); okhttp3.RequestBody formBody = new okhttp3.MultipartBody.Builder() .setType(okhttp3.MultipartBody.FORM) .addFormDataPart("file", file.getName(), okhttp3.RequestBody.create(okhttp3.MediaType.parse("text/plain"), file)) .addFormDataPart("other_field", "other_field_value") .build(); okhttp3.Request request = new okhttp3.Request.Builder().url(url).post(formBody).build(); okhttp3.Response response = client.newCall(request).execute(); } </code></pre> <p>这是我的PHP代码:</p> <pre><code>&lt;?php $uploaddir = '/uploads/'; $uploadfile = $uploaddir . basename($_FILES['file']['name']); echo "&lt;p&gt;"; if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { echo "File is valid, and was successfully uploaded. "; } else { echo "Upload failed"; } echo "&lt;/p&gt;"; echo '&lt;pre&gt;'; echo 'Here is some more debugging info:'; print_r($_FILES); print "&lt;/pre&gt;"; ?&gt; </code></pre> </div>

关于 spring boot 用gradle打包 war后运行的问题

打包以后 出现错误 ``` 2-Jul-2019 16:00:10.516 严重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Error during ServletContainerInitializer processing javax.servlet.ServletException: Failed to instantiate WebApplicationInitializer class at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:155) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5267) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1140) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.InstantiationException: io.j99.app.measure.Application at java.lang.Class.newInstance(Unknown Source) at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:152) ... 12 more Caused by: java.lang.NoSuchMethodException: io.j99.app.measure.Application.<init>() at java.lang.Class.getConstructor0(Unknown Source) ... 14 more 02-Jul-2019 16:00:10.516 严重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Context [/measure-0.0.1] startup failed due to previous errors 02-Jul-2019 16:00:10.562 警告 [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [measure-0.0.1] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: 02-Jul-2019 16:00:10.562 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [D:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\measure-0.0.1] has finished in [5,484] ms 02-Jul-2019 16:00:10.562 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [D:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\ROOT] 02-Jul-2019 16:00:10.734 信息 [36] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access. java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access. at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1364) at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1021) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkContextClassLoaders(AbandonedConnectionCleanupThread.java:96) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:69) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) ``` ``` apply plugin: 'java' apply plugin: 'org.springframework.boot' //apply plugin: 'spring-boot' //apply plugin: 'watch' apply plugin: 'war' war { baseName = 'measure' version = '0.0.1' } /*apply plugin: 'idea' idea { module { inheritOutputDirs = false outputDir = file("$buildDir/classes/main/") } }*/ repositories { maven { url "http://maven.aliyun.com/nexus/content/repositories/public/" } maven { url "http://repo.spring.io/libs-snapshot" } } tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } sourceCompatibility = 1.8 targetCompatibility = 1.8 springBoot { executable = true } configurations { // providedRuntime dev } /*jar { mainClass = "io.j99.app.measure.Application" }*/ dependencies { compile("commons-logging:commons-logging:1.2") compile("javax.servlet:javax.servlet-api:4.0.1") // compile group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: '9.0.8' compile("org.springframework.boot:spring-boot-devtools") // compile group: 'org.springframework.boot', name: 'spring-boot-dependencies', version: '2.2.0.M4' compile group: 'org.springframework.boot', name: 'spring-boot-maven-plugin', version: '2.2.0.M4' /// compile ("org.springframework.boot:spring-boot-dependencies") compile ("org.springframework.boot:spring-boot-maven-plugin") /// //// compile group: 'cn.org.faster', name: 'spring-boot-starter-parent', version: '1.1.1.RELEASE' compile ("org.springframework.boot:spring-boot-starter-tomcat") compile ("org.springframework.boot:spring-boot-starter-web") compile ("org.springframework.boot:spring-boot-devtools") // compile "org.springframework.boot:spring-boot-configuration-processor" compile("mysql:mysql-connector-java:8.0.12") /// compile fileTree(dir: 'libs', include: ['*.jar']) // dev("org.springframework.boot:spring-boot-devtools") testCompile("org.springframework.boot:spring-boot-starter-test") compile "io.springfox:springfox-swagger2:2.5.0" compile("org.springframework.session:spring-session") compile("org.simpleframework:simple-xml:2.7") compile("org.springframework.boot:spring-boot-starter-thymeleaf") compile("org.springframework.boot:spring-boot-starter-data-redis") compile("org.springframework.boot:spring-boot-starter-data-rest") compile 'io.jsonwebtoken:jjwt:0.6.0' // compile("org.springframework.boot:spring-boot-starter-data-mongodb") compile("org.springframework.boot:spring-boot-starter-jdbc") compile("org.springframework.boot:spring-boot-starter-data-jpa") compile("org.springframework.boot:spring-boot-starter-actuator") // compile("mysql:mysql-connector-java") compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.6.0") compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.retrofit2:converter-jackson:2.1.0' compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' compile 'com.squareup.okhttp3:logging-interceptor:3.1.2' compile 'com.squareup.okhttp3:okhttp:3.1.2' compile("org.springframework.boot:spring-boot-starter-web") compile('commons-net:commons-net:3.5') compile('com.googlecode.log4jdbc:log4jdbc:1.2') // https://mvnrepository.com/artifact/org.apache.poi/poi compile group: 'org.apache.poi', name: 'poi', version: '3.15' compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.15' // https://mvnrepository.com/artifact/commons-lang/commons-lang compile group: 'commons-lang', name: 'commons-lang', version: '2.6' compile 'com.qiniu:qiniu-java-sdk:7.2.2' // https://mvnrepository.com/artifact/org.apache.ant/ant compile group: 'org.apache.ant', name: 'ant', version: '1.10.1' } bootRun { // addResources = true classpath = sourceSets.main.runtimeClasspath + configurations.dev } ``` 用gradle打包 war后 放入tomcat运行 报错 不知道是那个jar问题导致的 想问问各位大佬

as使用Okhttp3报错NoClassDefFoundError

直接上图![图片](https://img-ask.csdn.net/upload/201609/13/1473772693_110937.jpg)

Android 怎么让OKhttp通过键值对传的值为键值对

我通过OKhttp以键值对的方式传值给后台:{data:"login",key:"login",data:data}, 但其中的data又是一个键值对,frombody.add(“data”.data)报错 ,哪位大神能够指点一下

关于okhttp3 API的一点事

okhttp3有没有官方API文档?网址是哪个?我的意思是说想看看okhttp里某个类的使用方法,拜托了

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

以下是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来实现。

okhttp3.HttpUrl$Builder

06-18 23:06:25.609 28099-28105/? E/jdwp: Failed sending reply to debugger: Broken pipe 06-18 23:06:25.641 28099-28099/? E/dalvikvm: Could not find class 'timber.log.Timber$DebugTree', referenced from method com.goldrats.turingdata.zmbeidiao.app.utils.GlobalConfiguration$3.onCreate 06-18 23:06:25.645 28099-28099/? E/dalvikvm: Could not find class 'okhttp3.OkHttpClient', referenced from method com.goldrats.library.di.component.DaggerAppComponent.okHttpClient 06-18 23:06:25.645 28099-28099/? E/dalvikvm: Could not find class 'okhttp3.OkHttpClient$Builder', referenced from method com.goldrats.library.di.module.ClientModule.provideClientBuilder 06-18 23:06:25.649 28099-28099/? E/dalvikvm: Could not find class 'retrofit2.Retrofit$Builder', referenced from method com.goldrats.library.di.module.ClientModule.provideRetrofitBuilder 06-18 23:06:25.649 28099-28099/? E/dalvikvm: Could not find class 'okio.Buffer', referenced from method okhttp3.HttpUrl.canonicalize 06-18 23:06:25.661 28099-28099/? E/dalvikvm: Could not find class 'okio.Buffer', referenced from method okhttp3.HttpUrl.canonicalize 06-18 23:06:25.661 28099-28099/? E/dalvikvm: Could not find class 'okhttp3.HttpUrl$Builder', referenced from method okhttp3.HttpUrl.getChecked 06-18 23:06:25.661 28099-28099/? E/dalvikvm: Could not find class 'okhttp3.HttpUrl$Builder', referenced from method okhttp3.HttpUrl.parse 06-18 23:06:25.661 28099-28099/? E/dalvikvm: Could not find class 'okio.Buffer', referenced from method okhttp3.HttpUrl.percentDecode 06-18 23:06:25.809 28099-28099/? E/dalvikvm: Could not find class 'okhttp3.HttpUrl$Builder', referenced from method okhttp3.HttpUrl.newBuilder 06-18 23:06:25.809 28099-28099/? E/dalvikvm: Could not find class 'okhttp3.HttpUrl$Builder', referenced from method okhttp3.HttpUrl.newBuilder 06-18 23:06:25.813 28099-28099/? E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NoClassDefFoundError: okhttp3.HttpUrl$Builder at okhttp3.HttpUrl.parse(HttpUrl.java:896) at okhttp3.HttpUrl.get(HttpUrl.java:906) 在android 5.0以下 出现的改问题 求解决!!!!

使用OkHttp没有FormEncodingBuilder

我在AS中配置了 compile 'com.squareup.okhttp3:okhttp:3.0.1' compile 'com.squareup.okio:okio:1.6.0' 看网上的博客学习时发现都有使用 _FormEncodingBuilder buildMultipartFormRequest_ 这两个类和方法,但是我就怎么也打不出来这两个,不知道是出了什么问题。

有没有用OKhttp3做下载进度显示的

有没有用OKhttp3做下载进度显示的, 为什么我做的,进度到一半就没了,文件下载完整 ![图片说明](https://img-ask.csdn.net/upload/201610/05/1475681794_17070.png) ![图片说明](https://img-ask.csdn.net/upload/201610/05/1475681812_201805.png) ![图片说明](https://img-ask.csdn.net/upload/201610/05/1475681823_821871.png) ![图片说明](https://img-ask.csdn.net/upload/201610/05/1475682137_992146.png) ![图片说明](https://img-ask.csdn.net/upload/201610/05/1475682148_444410.png) 用到okhttp-3.4.1.jar

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

okhttp3中的post请求问题

大神看一下,我这个POST请求那里错了,直接说出来。谢谢大神 ``` String username = usernameEdit.getText().toString(); String password = passwordEdit.getText().toString(); OkHttpClient client = new OkHttpClient(); RequestBody requestBody = new FormBody.Builder() .add("username", username) .add("password", password) .build(); Request request = new Request.Builder() .url("http://test.ourwechat.com/test/auth.php") .post(requestBody) .build(); try { Response response =client.newCall(request).execute(); response.body().string(); } catch (IOException e) { e.printStackTrace(); } ```

Android OkHttp中调用Handler.post更新UI,在Fragment中无效!

我用OkHttp enqueue异步请求数据,然后用所得到的数据更新UI,在Activity中没什么问题 但在MainAcitivity中的ViewPage的Fragment中调用时出现了Hnadler.post(。。。)中的 代码没有执行的情况。很困惑,求高见!!!

使用okhttp 2.5.0 报错

Process: com.jpardogo.android.listbuddies, PID: 25262 java.lang.RuntimeException: Picasso detected an unsupported OkHttp on the classpath. To use OkHttp with this version of Picasso, you'll need: 1. com.squareup.okhttp:okhttp:1.6.0 (or newer) 2. com.squareup.okhttp:okhttp-urlconnection:1.6.0 (or newer) Note that OkHttp 2.0.0+ is supported!

用okhttp实现断点续传,网络请求进OnFailure,急急急,大神们

ProgressDownloader类 ``` public class ProgressDownloader { public static final String TAG = "TestProgressDownloader"; private ProgressResponseBody.ProgressListener progressListener; private String url; private OkHttpClient client; private File destination; private Call call; public ProgressDownloader(String url, File destination, ProgressResponseBody.ProgressListener progressListener) { this.url = url; this.destination = destination; this.progressListener = progressListener; //在下载、暂停后的继续下载中可复用同一个client对象 client = getProgressClient(); } //每次下载需要新建新的Call对象 private Call newCall(long startPoints) { Request request = new Request.Builder() .get() .url(url) .header("RANGE", "bytes=" + startPoints + "-")//断点续传要用到的,指示下载的区间 .build(); return client.newCall(request); } public OkHttpClient getProgressClient() { // 拦截器,用上ProgressResponseBody Interceptor interceptor = new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Response originalResponse = chain.proceed(chain.request()); return originalResponse.newBuilder() .body(new ProgressResponseBody(originalResponse.body(), progressListener)) .build(); } }; return new OkHttpClient.Builder() .addNetworkInterceptor(interceptor) .build(); } //startsPoint指定开始下载的点 public void download(final long startsPoint) { call = newCall(startsPoint); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.e("=======================","fail"); } @Override public void onResponse(Call call, Response response) throws IOException { Log.e("=======================","pass"); } }); } public void pause() { if(call!=null){ call.cancel(); } } private void save(Response response, long startsPoint) { ResponseBody body = response.body(); InputStream in = body.byteStream(); FileChannel channelOut = null; // 随机访问文件,可以指定断点续传的起始位置 RandomAccessFile randomAccessFile = null; try { randomAccessFile = new RandomAccessFile(destination, "rwd"); //Chanel NIO中的用法,由于RandomAccessFile没有使用缓存策略,直接使用会使得下载速度变慢,亲测缓存下载3.3秒的文件,用普通的RandomAccessFile需要20多秒。 channelOut = randomAccessFile.getChannel(); // 内存映射,直接使用RandomAccessFile,是用其seek方法指定下载的起始位置,使用缓存下载,在这里指定下载位置。 MappedByteBuffer mappedBuffer = channelOut.map(FileChannel.MapMode.READ_WRITE, startsPoint, body.contentLength()); byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) != -1) { mappedBuffer.put(buffer, 0, len); } } catch (IOException e) { e.printStackTrace(); }finally { try { in.close(); if (channelOut != null) { channelOut.close(); } if (randomAccessFile != null) { randomAccessFile.close(); } } catch (IOException e) { e.printStackTrace(); } } } } ``` MainActivity类 ``` /** * 1.添加依赖 * 2.生成带进度监听的ProgressResponseBody * 3.创建ProgressDownloader * 4.清单文件中添加网络权限和文件访问权限 */ public class MainActivity extends AppCompatActivity implements ProgressResponseBody.ProgressListener{ public static final String TAG = "MainActivity"; public static final String PACKAGE_URL = "http://gdown.baidu.com/data/wisegame/df65a597122796a4/weixin_821.apk"; @Bind(R.id.progressBar) ProgressBar progressBar; private long breakPoints; private ProgressDownloader downloader; private File file; private long totalBytes; private long contentLength; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick({R.id.downloadButton, R.id.cancel_button, R.id.continue_button}) public void onClick(View view) { switch (view.getId()) { case R.id.downloadButton: // 新下载前清空断点信息 breakPoints = 0L; file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "sample.apk"); downloader = new ProgressDownloader(PACKAGE_URL, file, this); downloader.download(0L); break; case R.id.cancel_button: downloader.pause(); Toast.makeText(this, "下载暂停", Toast.LENGTH_SHORT).show(); // 存储此时的totalBytes,即断点位置。 breakPoints = totalBytes; break; case R.id.continue_button: downloader.download(breakPoints); break; } } @Override public void onPreExecute(long contentLength) { // 文件总长只需记录一次,要注意断点续传后的contentLength只是剩余部分的长度 if (this.contentLength == 0L) { this.contentLength = contentLength; progressBar.setMax((int) (contentLength / 1024)); } } @Override public void update(long totalBytes, boolean done) { // 注意加上断点的长度 this.totalBytes = totalBytes + breakPoints; progressBar.setProgress((int) (totalBytes + breakPoints) / 1024); if (done) { // 切换到主线程 Observable .empty() .observeOn(AndroidSchedulers.mainThread()) .doOnCompleted(new Action0() { @Override public void call() { Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT).show(); } }) .subscribe(); } } } ``` 代码链接:https://blog.csdn.net/halaoda/article/details/78502693

怎么用okhttp3,重复请求同一个外部服务接口,并合并返回结果

哪位大佬springboot,怎么用okhttp3,重复请求同一个外部服务接口,并合并返回结果,有一个请求错误就停止,支持htp和https

okhttp3.8 post json android发送json字符问题

JSONObject obj = new JSONObject(); obj.put("uname",uname); obj.put("pwd",pwd); GetPostUtil gp = new GetPostUtil(); String res = gp.post("http://192.168.0.102:8000/dologin/", obj.toString()); 提交成功后 POST:<QueryDict: {u'{"uname":"rfff","pwd":"ttyt"}': [u'']}>, 服务器端的post打印出来,怎么整个字符串都做一个键的值了。这个是怎么回事,那位大侠知道

OkHttp如何对get方式获取的网页使用post方式发送表单数据?

我先使用一个get方式获获取了一个网页response,接下来我想用post方法对这个网页传递参数,要怎么锁

Android post模拟登录特殊符号怎么解决?

写了个应用,使用post模拟登录学校的教务系统,但是在安卓下使用OkHttp进行post登录时发现密码带有特殊符号时会出现登录失败,如何解决这种情况?

Okhttp3 post请求报错,有大神知道解决办法吗?

![图片说明](https://img-ask.csdn.net/upload/202003/12/1583987817_691210.png) 有时候执行到红框部分便抛出以下异常 ``` java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:210) at java.net.SocketInputStream.read(SocketInputStream.java:141) at sun.security.ssl.InputRecord.readFully(InputRecord.java:465) at sun.security.ssl.InputRecord.read(InputRecord.java:503) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975) at sun.security.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1761) ``` 但是有时候又可以正常运行,我一直觉得是网络不好才会报错,但不知还有没有其它原因???

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

将一个接口响应时间从2s优化到 200ms以内的一个案例

一、背景 在开发联调阶段发现一个接口的响应时间特别长,经常超时,囧… 本文讲讲是如何定位到性能瓶颈以及修改的思路,将该接口从 2 s 左右优化到 200ms 以内 。 二、步骤 2.1 定位 定位性能瓶颈有两个思路,一个是通过工具去监控,一个是通过经验去猜想。 2.1.1 工具监控 就工具而言,推荐使用 arthas ,用到的是 trace 命令 具体安装步骤很简单,大家自行研究。 我的使用步骤是...

学历低,无法胜任工作,大佬告诉你应该怎么做

微信上收到一位读者小涛的留言,大致的意思是自己只有高中学历,经过培训后找到了一份工作,但很难胜任,考虑要不要辞职找一份他能力可以胜任的实习工作。下面是他留言的一部分内容: 二哥,我是 2016 年高中毕业的,考上了大学但没去成,主要是因为当时家里经济条件不太允许。 打工了三年后想学一门技术,就去培训了。培训的学校比较垃圾,现在非常后悔没去正规一点的机构培训。 去年 11 月份来北京找到了一份工...

JVM内存结构和Java内存模型别再傻傻分不清了

讲一讲什么是Java内存模型 Java内存模型虽说是一个老生常谈的问题 ,也是大厂面试中绕不过的,甚至初级面试也会问到。但是真正要理解起来,还是相当困难,主要这个东西看不见,摸不着。 这是一个比较开放的题目,面试官主要想考察的是对Java内存模型的了解到了什么程度了,然后根据回答进行进一步的提问 下面,我们就这个问题的回答列一下我们的思路 具体的思路如下: 说一说Java内存模型的缘由 简略辨析...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Google 与微软的浏览器之争

浏览器再现“神仙打架”。整理 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)从 IE 到 Chrome,再从 Chrome 到 Edge,微软与...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

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

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

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

立即提问
相关内容推荐