无法记录OKHTTP3 response.body.string

时间:2016-04-11 15:40:06

标签: android httpresponse okhttp

好的 - 所以我对此感到有点困惑。

我已经设置了OKHTTP3 POST。当我得到响应时,我一直试图将主体放入一个字符串(这是一个字符串响应),但有些事情变得很糟糕:

[main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel     2.16.3 (CamelContext: camel-1) is starting
  [main] INFO org.apache.camel.management.ManagedManagementStrategy - JMX is enabled
  [main] INFO org.apache.camel.impl.converter.DefaultTypeConverter - Loaded 198 type converters
  [main] INFO org.apache.camel.impl.DefaultRuntimeEndpointRegistry -   Runtime endpoint registry is in extended mode gathering usage statistics   of all incoming and outgoing endpoints (cache limit: 1000)
  Exception in thread "main" java.lang.NoClassDefFoundError:   org/elasticsearch/action/support/replication/ReplicationType
    at org.apache.camel.component.elasticsearch.ElasticsearchConstants.  <clinit>(ElasticsearchConstants.java:46)
    at   org.apache.camel.component.elasticsearch.ElasticsearchConfiguration.<init>  (ElasticsearchConfiguration.java:43)
    at   org.apache.camel.component.elasticsearch.ElasticsearchComponent.createEndp  oint(ElasticsearchComponent.java:43)
    at   org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.jav  a:114)
      at   org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.  java:567)
    at   org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContext  Helper.java:79)
    at   org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.jav  a:211)
    at   org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteCont  ext.java:107)
    at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteCont  ext.java:113)
    at org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:62)
    at org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:56)
    at org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:535)
    at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:496)
    at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:220)
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1069)
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196)
    at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:944)
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3260)
    at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:2983)
    at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175)
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2814)
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2810)
    at   org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2833)
    at   org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java  :2810)
    at  rg.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
    at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2779)
    at com.nsm.sam.cep.CEPBroker.main(CEPBroker.java:43)
  Caused by: java.lang.ClassNotFoundException:   org.elasticsearch.action.support.replication.ReplicationType
      at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 27 more

我得到一个日志说“有响应”但是(长度为80)然后它就停止了。它并没有说我的rep字符串是null,或者是空的...它只是从不调用第二个Log。

任何人都有任何想法是什么?

3 个答案:

答案 0 :(得分:0)

尝试使用此..

      OkHttpClient client = new OkHttpClient.Builder().build();          

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

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

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                try {

                    Log.d("Response",response.body().string());

                    }
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    response.body().close();
                }
            }

        });

答案 1 :(得分:0)

正确......显然我只需要将获取字符串的部分放在AsyncTask中,它就开始工作了。

没有任何错误消息或任何指示这样做的内容,但我回过头来实际查看了Callback的文档,并提到在另一个帖子上使用正文。

new SendPictureClass().execute(response);

可能应该从那里开始......¯_(ツ)_ /¯

感谢帮助人员!

答案 2 :(得分:0)

我也遇到了这个问题,Log无法正常工作 我找到了一个临时解决方案 我尝试使用Toast来显示响应,然后我发现响应加速,但有很多空格(不确定这些字符是否为空格)。

所以我使用的是Log.i(TAG, rep.trim());,效果很好。我不知道这个解决方案是否适用于这个问题,但毕竟它对我有用。