标签: okhttp

未解决的参考:mockwebserver

我正在使用mockwebserver编写一个测试套件。我从官方 github 页面输入了所有依赖项。每次我尝试运行我收到的测试Unresolved reference: mockwebserver

没有导入选项。进口时的字体不是红色的。Android Studio 不提示任何内容。除了与未解析的引用相关的错误之外,没有其他错误。

截屏: 在此输入图像描述


构建.gradle

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id("org.jetbrains.kotlin.android.extensions")
}

android {
    compileSdk 31

    useLibrary("android.test.runner")
    useLibrary("android.test.base")
    useLibrary("android.test.mock")

    defaultConfig {
        applicationId "com.example.moviespotter"
        minSdk 21
        targetSdk 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary true
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    buildFeatures {
        viewBinding = true
        compose true
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    composeOptions {
        kotlinCompilerExtensionVersion compose_version
        kotlinCompilerVersion '1.5.21' …
Run Code Online (Sandbox Code Playgroud)

junit4 android-studio okhttp mockwebserver

1
推荐指数
1
解决办法
1581
查看次数

OkHttp中的ThreadPoolExecutor使用和异步操作的Retrofit的区别

OkHttp 2.0.0-RC1使用Dispatcher中ThreadPoolExecutor定义的:#getExecutorService

executorService = new ThreadPoolExecutor(
  0, Integer.MAX_VALUE,
  60, TimeUnit.SECONDS,
  new LinkedBlockingQueue<Runnable>(),
  Util.threadFactory("OkHttp Dispatcher", false));`
Run Code Online (Sandbox Code Playgroud)

这基本上是实现的Executors#newFixedThreadPool.

另一方面,Executors.newCachedThreadPool平台#defaultHttpExecutor中定义的Retrofit使用归结为:

executorService = new ThreadPoolExecutor(
  0, Integer.MAX_VALUE,
  60, TimeUnit.SECONDS,
  new SynchronousQueue<Runnable>(),
  someThreadFactory);
Run Code Online (Sandbox Code Playgroud)

任何人都有任何想法为什么OkHttp使用Executors#newFixedThreadPool和改造Executors#newCachedThreadPool

java threadpoolexecutor retrofit okhttp

0
推荐指数
1
解决办法
2516
查看次数

无法解析符号 okhttp

我正在 android studio 中开发一个 gcm 聊天应用程序,但我收到此错误,不知道如何解决。我搜索了它,但没有找到任何东西。这是代码,在 MainActivity.java 中也有同样的问题。

package com.example.jason.androidchat2;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.AsyncTask;
import android.support.annotation.NonNull;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import com.squareup.okhttp.OkHttpClient;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;


public class ChatActivity extends Activity {

EditText editText_mail_id;
EditText editText_chat_message; …
Run Code Online (Sandbox Code Playgroud)

android okhttp

0
推荐指数
1
解决办法
1万
查看次数

使用OkHttp将大量图像下载到SD卡

因此,我的应用程序的一部分使用IntentService将大量(~1600)图像下载到SdCard.我以前使用过Glide,但现在想切换到OkHttp,因为它似乎更快,耗电更少.这是我目前的代码:

for (int i = 1; i < 1600; i++) {
        try {
            Request request = new Request.Builder()
                    .url(imageUrls[i])
                    .build();

            Response response = client.newCall(request).execute();
            File testDirectory = new File(Environment.getExternalStorageDirectory() 
                                                                  + "/downloadTest");
            if (!testDirectory.exists())
                 testDirectory.mkdirs();
            OutputStream outputStream = new FileOutputStream(new File(testDirectory, 
                                                          "testImage" + i + ".png"));
            InputStream inputStream = response.body().byteStream();
            byte[] buffer = new byte[1024];
            int read;
            while ((read = inputStream.read(buffer, 0, buffer.length)) >= 0)
                outputStream.write(buffer, 0, read);
            outputStream.flush();
            outputStream.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

有什么方法可以优化这段代码,使下载速度更快?

performance android image okhttp

0
推荐指数
1
解决办法
1833
查看次数

Android - OkHttp 3.6.0 Adress.class 重复

我遇到过类似的问题,这表明同样的问题。但是,就我而言,它似乎以不同的方式发生,不应产生如下所述的问题:

想象一下,我有两个内部私有库,发布在私有 Maven 存储库上,命名如下:

com.x.y.analytics
com.x.y.player
Run Code Online (Sandbox Code Playgroud)

这两个库都使用 OkHttp 3.6.0 和下面给定的代码片段:

provided 'com.squareup.okhttp3:okhttp:3.6.0'
Run Code Online (Sandbox Code Playgroud)

所以基本上,当我向 maven 发布 aar 时,我不包含实际的库,我编译它并将其提供给父项目中提到的库,代码片段如下:

compile 'com.squareup.okhttp3:okhttp:3.6.0'
Run Code Online (Sandbox Code Playgroud)

但是,即使由于这个库只有 1 个编译版本,一切都应该没问题,但我有下面给出的错误:

错误:任务 ':application:transformClassesWithJarMergingForDebug' 执行失败。

com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:okhttp3/Address.class

我相信如果我使用 compile 将库注入到私有库中会发生这个问题,但是由于我使用了提供的,如果有任何修复的线索,你能详细说明这个问题吗?

PS:OkHttp 的 GitHub 项目也有一个 issue,可以在这里找到。

java android okhttp okhttp3

0
推荐指数
1
解决办法
1254
查看次数

okhttp -execute() 与 body().byteStream

使用时OkHttp,网络请求的执行方式1如下2

            val response = client.newCall(request).execute() // (1)
            if (response.isSuccessful) {
                val bs = response.body().byteStream() // (2)
                val bitmap = BitmapFactory.decodeStream(bs)
            } else { ... }
Run Code Online (Sandbox Code Playgroud)

我一直以为我是在 被处决的(1),在这种情况下,询问响应是否成功是有意义的。但今天我决定实现这个官方配方来跟踪文件下载的进度。

然后我意识到,如果我删除了行 ( response.body().byteStream()),进度计数器根本不会移动。理论上,我们没有下载任何东西,除非我们下载了,否则success在这种情况下意味着什么。

如果这是一个虚拟问题,我很抱歉,我相信我在这里缺少一些关于网络的非常基本的东西,我想了解更多。我试图理解该Okio库的源代码,但它对我来说有点太复杂,我需要一些参考或指导。

okhttp okio

0
推荐指数
1
解决办法
2351
查看次数

Kotlin-如何使用OkHttp Kotlin设置连接超时

我看到这个

如何使用OkHttp设置连接超时

但这是Java(Android)语言的链接。我想使用kotlin语言...`我正在使用OkHttp库

 val client = OkHttpClient()

 val time = client.connectTimeoutMillis() // it's get only methood but i looking for method for set Timeout
Run Code Online (Sandbox Code Playgroud)

我的麻烦是我找不到如何为Kotlin 设置连接超时和套接字超时。

timeout kotlin okhttp kotlin-android-extensions

0
推荐指数
1
解决办法
3227
查看次数

OkHttpClient 抛出 NullPointerException

我正在尝试使用 OkHttp3 通过 WiFi 发送一些数据。

我使用创建了一个客户端,

import okhttp3.OkHttpClient;
.....
public OkHttpClient client;
Run Code Online (Sandbox Code Playgroud)

单击按钮后我设置了 websocket,

private void start() {
    Request request = new Request.Builder().url("ws://192.168.1.84:81/").build();
    EchoWebSocketListener listener = new EchoWebSocketListener();
    WebSocket ws = client.newWebSocket(request, listener);

    client.dispatcher().executorService().shutdown();
}
Run Code Online (Sandbox Code Playgroud)

其中EchoWebSocketListener是 的扩展WebSocketListener,完整列表如下。

但我在运行时不断收到以下错误...

java.lang.NullPointerException: Attempt to invoke virtual method 'okhttp3.WebSocket okhttp3.OkHttpClient.newWebSocket(okhttp3.Request, okhttp3.WebSocketListener)' on a null object reference
Run Code Online (Sandbox Code Playgroud)

当追溯到 start() 函数中的行时,

WebSocket ws = client.newWebSocket(request, listener);
Run Code Online (Sandbox Code Playgroud)

怎么会clientnull

完整代码清单:

package qdivision.org.qrtracker;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View; …
Run Code Online (Sandbox Code Playgroud)

java android nullpointerexception okhttp

0
推荐指数
1
解决办法
2698
查看次数

Retrofit和Okhttp被抛弃了吗?

  • 改造版本2.9.0 (2020-05-20)
  • Okhttp 版本 4.10.0 (2022-06-12) 版本 5.0.0-alpha.11 (2022-12-24)

Retrofit 有 36 个打开的拉取请求和 147 个打开的错误,Okhttp 有 9 个打开的拉取请求和 161 个打开的错误。

我知道这个问题很伤人,而且我们都把 Retrofit 和 Okhttp 当作小孩子,但我需要问:

Retrofit和Okhttp被抛弃了吗?

android retrofit okhttp okio

0
推荐指数
1
解决办法
571
查看次数

java.lang.String 无法从 Okhttp 转换为 JSONArray

我正在尝试从服务器获取 json 并将其放入我的 RecyclerView,但它说“java.lang.String 无法转换为 JSONArray”。我试图跟踪我的 json,但它什么也没显示。怎么了,我该如何解决这个问题?

     private void Prosesdataserver(int id){
     AsyncTask<Integer, Void, Void> task = new AsyncTask<Integer, Void, Void>() {
        @Override
        protected Void doInBackground(Integer... integers) {
        OkHttpClient client = new OkHttpClient();
        try{
           RequestBody formBody = new FormBody.Builder().add("username_krm", username).add("password_krm", password).build();
           Request request = new Request.Builder().url("http://" + urlpakai + "/utrapos/index.php/getpenawaran?id="+integers[0]).post(formBody).build();
           response = client.newCall(request).execute();
           ini = response.body().toString();
           JSONArray array = new JSONArray(ini);
           System.out.println("Saya Berkata: " + ini);
              for(int i=0; i<array.length();i++){
                 JSONObject object = array.getJSONObject(i);
                 DataJson hasil = new DataJson(object.getInt("id"), object.getString("kode"), object.getString("tglpenawaran"), object.getString("nama"), …
Run Code Online (Sandbox Code Playgroud)

android json android-asynctask okhttp

-1
推荐指数
1
解决办法
1660
查看次数

无法通过okhttp3上传文件

我得到了关于活动结果的文件。或者我应该说它的内容 uri 版本。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    if(resultCode==RESULT_OK && requestCode==0){
        Log.d("uri data",""+data.getData());
        selectedFileUri = data.getData();
Run Code Online (Sandbox Code Playgroud)

我的问题是如何通过 okhttp3 方法发送这个文件?

okhttp 3 方法如下

multipart.addFilePart("data[User][user_picture]", selectedFileUri);
Run Code Online (Sandbox Code Playgroud)

感谢您的时间。

java android file-upload okhttp okhttp3

-2
推荐指数
1
解决办法
4433
查看次数

android中到底在哪里添加Okhttp和改造proguard规则?

我明白了,但找不到在哪里添加?我还应该使用花括号{}之类的吗?

https://github.com/krschultz/android-proguard-snippets/blob/master/libraries/proguard-square-okhttp3.pro

# OkHttp
-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
Run Code Online (Sandbox Code Playgroud)

代码:

dependencies {
    /*TODO:-> Android default libraries*/
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha04'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'

    /*TODO:-> For shows Database on Google Chrome*/
    implementation 'com.facebook.stetho:stetho:1.5.0'
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.8@aar') {
        transitive = true
    }

    /*TODO:-> For View binding*/
    implementation 'com.jakewharton:butterknife:10.1.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'

    /*TODO:-> Server side libraries*/
    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation …
Run Code Online (Sandbox Code Playgroud)

android proguard retrofit okhttp

-2
推荐指数
1
解决办法
6284
查看次数

okhttp4 准备好用于 Kotlin Multiplatform Mobile 了吗?

可以不使用例如ktorwithokhttp作为引擎,而是直接使用okhttp4它仅在 Kotlin 中构建吗?

kotlin okhttp ktor kotlin-multiplatform

-3
推荐指数
1
解决办法
392
查看次数