标签: okhttp

java.net.ProtocolException:意外的状态行:HTTP /1.1422 UnprocessableEntity

我正在使用Retrofit + Okhttp发出POST请求,我遇到了以下错误:

02-05 04:45:13.981  15972-16249/com.myapp.android D/Retrofit? ---> HTTP POST http://10.0.0.4:3000/api/v1/users/1/posts
02-05 04:45:13.981  15972-16249/com.myapp.android D/Retrofit? Accept: application/json
02-05 04:45:13.981  15972-16249/com.myapp.android D/Retrofit? Content-Type: application/json; charset=UTF-8
02-05 04:45:13.981  15972-16249/com.myapp.android D/Retrofit? Content-Length: 150
02-05 04:45:13.981  15972-16249/com.myapp.android D/Retrofit? {"description":"test","image_url":"https://s3.amazonaws.com/bucket/xxx-4800-b0e0-fc206f95f158.jpeg","title":"test","price":0.0,"user_id":0}
02-05 04:45:13.981  15972-16249/com.myapp.android D/Retrofit? ---> END HTTP (150-byte body)
02-05 04:45:14.001  15972-15972/com.myapp.android W/EGL_genymotion? eglSurfaceAttrib not implemented
02-05 04:45:14.017  15972-16249/com.myapp.android D/Retrofit? ---- ERROR http://10.0.0.4:3000/api/v1/users/1/posts
02-05 04:45:14.017  15972-16249/com.myapp.android D/Retrofit? java.net.ProtocolException: Unexpected status line: HTTP/1.1 422??Unprocessable Entity
            at com.squareup.okhttp.internal.http.StatusLine.parse(StatusLine.java:73)
            at com.squareup.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:187)
            at com.squareup.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:80)
            at com.squareup.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:791)
            at com.squareup.okhttp.internal.http.HttpEngine.access$200(HttpEngine.java:90)
            at …
Run Code Online (Sandbox Code Playgroud)

android retrofit okhttp

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

在使用HttpUrlConnection时,在Android设备上使用的okHTTP> 4.4?

我想知道是否有人可以确认一些因为我不确定它是否适用于手机上安装的Android版本或我正在编译的SDK版本.

似乎HTTPUrlConnection现在在设备> 4.4上内部使用OkHttp.因此,如果我的应用程序编译4.4但可以在4.0上工作,如果它在4.0上启动它仍然会使用下面的OkHttp?

我认为使用OkHttp作为直接实现并绕过HttpUrlConnection仍有一些优点?

提前致谢

android httpurlconnection okhttp

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

如何从OkHttp Response对象中提取原始JSON字符串?

private static final String URL = "http://www.livroandroid.com.br/livro/carros/carros_{tipo}.json";

public static List<Carro> getCarros(Context context, String tipo) throws IOException {
    String url = URL.replace("{tipo}", tipo);
    OkHttpClient okHttpClient = new OkHttpClient();
    Request request = new Request.Builder()
            .url(URL)
            .build();
    Response response = okHttpClient.newCall(request).execute();
    String json = response.body().toString();
    List<Carro> carros = parserJSON(context, json);
    return carros;
}
Run Code Online (Sandbox Code Playgroud)

如果我json在调用getCarros方法时打印出变量的值,我在logcat中看到以下消息:

com.squareup.okhttp.internal.http.RealResponseBody@1e11866

如何记录我收到的实际JSON字符串?

android json okhttp

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

无法解决:okhttp loggin-interceptor

我正在使用Retrofit 2.0.0-beta2库与API进行通信.直到上周五,一切正常.今天我收到这个错误:

Failed to resolve: com.squareup.okhttp:logging-interceptor:2.6.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

我无法摆脱它.我在网上搜索,但似乎我的gradle文件没问题:

build.gradle(项目)

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
        maven { url 'http://oss.sonatype.org/content/repositories/snapshots' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

build.gradle(app)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.package.app"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        //(...)
    }
}

dependencies {
    //(...)
    compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
    compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
    compile 'com.squareup.okhttp:okhttp:2.5.0'
    compile 'com.google.code.gson:gson:2.4'
    compile …
Run Code Online (Sandbox Code Playgroud)

android gradle android-gradle-plugin retrofit okhttp

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

OkHttp newBuilder()

newBuilder()函数在OkHttp中的作用是什么.它是创建一个全新的客户端还是调整此处给出的现有客户端.在这种情况下,"调整"究竟意味着什么?

android retrofit okhttp okhttp3

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

android OkHttpClient请求错误

我正在尝试使用我的Android应用程序将一些数据存储在mysql数据库中。我正在使用okhttp3发送请求,但在此行出现一个错误:

client.newCall(request).execute();
Run Code Online (Sandbox Code Playgroud)

我在本地计算机和在线上尝试了它,但是它给了我同样的错误,这里是代码,

public class MainActivity extends AppCompatActivity {

    String token1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("MainActivity is :" + FirebaseInstanceId.getInstance().getToken());
        FirebaseMessaging.getInstance().subscribeToTopic("test");
        FirebaseInstanceId.getInstance().getToken();
        token1=FirebaseInstanceId.getInstance().getToken();
    }

    public void clicking(View view) {

        OkHttpClient client = new OkHttpClient();
        RequestBody body = new FormBody.Builder()
                .add("Token",token1)
                .build();

        okhttp3.Request request = new okhttp3.Request.Builder()
                .url("http://saleh923.byethost8.com/hii.html")
                .post(body)
                .build();

        try {
            client.newCall(request).execute();
        } catch (IOException e) {

            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是日志:

 com.example.user.firebasenot E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.user.firebasenot, PID: 3280
    java.lang.IllegalStateException: Could not execute method …
Run Code Online (Sandbox Code Playgroud)

java mysql android okhttp okhttp3

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

MobileFirst 8 - WLResourceRequestPlugin错误 - JWT格式不正确

我有一个关于mobilefirst的大问题,当我尝试调用受保护的资源时,我遇到了这个问题:

问题仅在Android上,iOS完美运行.

evaluateJavascript = cordova.callbackFromNative('WLResourceRequestPlugin368975848',false,9,[{"status":400,"statusText":"Bad Request","responseText":"{\"errorCode \":\"invalid_client \",\ "errorMsg \":\"错误的JWT格式\"}","responseJSON":{"errorCode":"invalid_client","errorMsg":"不正确的JWT格式"},"responseHeaders":{"X-Powered-By ":" 的Servlet/3.1" , "内容类型": "应用/ JSON", "内容语言": "EN-US", "传输编码": "分块", "连线": "关闭", "日期":"2017年5月31日星期三16:13:55 GMT","OkHttp-Sent-Millis":"1496218412371","OkHttp-Received-Millis":"1496218412405"},"errorMsg":"JWT不正确格式", "的errorCode": "invalid_client"}],假);

问题是我检查了客户端的时间和服务器时间,它们是相同的,但是当我更改客户端时间并添加一天它就可以了!我该如何解决这个问题?

cordova okhttp ibm-mobilefirst mobilefirst-adapters mobilefirst-server

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

如何在回调后避免OkHttp Dispatcher中的FATAL EXCEPTION

exception在接收到回调后执行ui动作时我得到了这个OkHttp.

致命异常:OkHttp Dispatcher进程:org.example.verificationserviceexample,PID:20421 android.util.AndroidRuntimeException:动画师只能在android.animation的android.animation.ValueAnimator.cancel(ValueAnimator.java:1020)的Looper线程上运行. AnimatorSet.cancel(AnimatorSet.java:366)在android.graphics.drawable.RippleComponent.cancelSoftwareAnimations(RippleComponent.java:214)在android.graphics.drawable.RippleComponent.cancel(RippleComponent.java:133)在android.graphics.drawable .RippleComponent.enter(RippleComponent.java:100)在android.graphics.drawable.RippleDrawable.tryBackgroundEnter(RippleDrawable.java:552)在android.graphics.drawable.RippleDrawable.setBackgroundActive(RippleDrawable.java:290)在android.graphics.在Android.widget.TextView的android.view.View.drawableStateChanged(View.java:18046)的android.graphics.drawable.Drawable.setState(Drawable.java:735)中的drawable.RippleDrawable.onStateChange(RippleDrawable.java:270) .drawableStateChanged(TextView.j ava:4090)位于android.view.View.setEnabled(View.java)的android.view.View.refreshDrawableState(View.java:18115)的android.support.v7.widget.AppCompatButton.drawableStateChanged(AppCompatButton.java:155) :8135)在android.widget.TextView.setEnabled(TextView.java:1609)在org.example.verificationserviceexample.MainActivity.renderButtons(MainActivity.java:146)在org.example.verificationserviceexample.MainActivity.onAudioStateChanged(MainActivity.java: 170)在com.bssys.spitchmobilesdk.audio.SpitchAudioManager.publishAudioStateChange(SpitchAudioManager.java:123)在com.bssys.spitchmobilesdk.audio.SpitchAudioManager.stopAudio(SpitchAudioManager.java:83)在com.bssys.spitchmobilesdk.VerificationService.stopAudio (VerificationService.java:96)位于org.example的org.example.verificationserviceexample.MainActivity.lambda $ null $ 0 $ MainActivity(MainActivity.java:60)的com.bssys.spitchmobilesdk.VerificationService.stopEnrollment(VerificationService.java:57) .verificationserviceexample.MainActivity $$林 BDA $ 3.onSpitchResult(来源不明)在com.bssys.spitchmobilesdk.VerificationService $ 1.onFailure(VerificationService.java:111)在okhttp3.RealCall $ AsyncCall.execute(RealCall.java:161)在okhttp3.internal.NamedRunnable.run( NamedRunnable.java:32)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:607)在java.lang.Thread.run (Thread.java:761)

这是我正在使用的代码:

public void addVoicePrintFromSource(Pipe source, SpitchConfig config, @NonNull String speakerId, Callback callback){

        RequestBody requestBody = new RequestBody() {
            @Override
            public MediaType contentType() {
                return MediaType.parse("audio/x-pcm; rate="+config.getRate());
            }

            @Override
            public void writeTo(BufferedSink sink) throws IOException {
               sink.writeAll(source.source());
            }
        };
        Request request = new Request.Builder()
       .url(config.getServerURL())
                .addHeader("Accept","*/*")
                .addHeader("Connection","Keep-Alive") 
                .post(requestBody)
                .build(); …
Run Code Online (Sandbox Code Playgroud)

android okhttp

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

Retrofit&OkHttp-一次只能发送一个请求吗?

我正在使用Retrofit 2.4.0将请求发送到服务器。但是有时,如果服务器的时间戳与另一个请求具有相似的毫秒数,则服务器会阻止我的请求。我需要一次发送一个请求:

  1. 请求A已发送
  2. 请求B等待,直到收到对请求A的响应
  3. 请求A成功或错误完成
  4. 请求B已发送

是否可以使用Retrofit和OkHttp库创建此类队列?

android retrofit okhttp retrofit2 okhttp3

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

致命异常:OkHttp分派器

我在Android应用中使用OkHttp库向天气API发出Web请求。我已经实现了我的代码,并且在执行请求时遇到了致命错误。

我已经在清单中添加了INTERNET权限。

MainActivity.java:

private CurrentWeather currentWeather;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final ActivityMainBinding binding = DataBindingUtil.setContentView(MainActivity.this, R.layout.activity_main);

        String apiKey = "xxx";
        double latitude = 37.8267;
        double longitude = -122.4233;
        String forecastURL = String.format("https://api.darksky.net/forecast/%s/%f,%f", apiKey, latitude, longitude);

        if (isNetworkAvailable()) {
            OkHttpClient client = new OkHttpClient();

            Request request = new Request.Builder()
                    .url(forecastURL)
                    .build();

            Call call = client.newCall(request);
            call.enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {

                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    try …
Run Code Online (Sandbox Code Playgroud)

java android okhttp

3
推荐指数
5
解决办法
4492
查看次数