java - Android 到 WCF 连接被对等方重置

标签 java android wcf spring-rest

我有使用 WCF 服务的 Android 应用程序,这是来自 AsyncTask 的代码 fragment :

private HttpEntity<HashMap> request(){
        HttpHeaders requestHeaders = new HttpHeaders();
        requestHeaders.add("Cookie", LocalData.Web.getCookie(this.context));

        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter());

        HttpEntity<HashMap> requestDataEntity = new HttpEntity<>(request, requestHeaders);

        HttpEntity<HashMap> response = restTemplate.exchange(this.url, this.httpMethod, requestDataEntity, HashMap.class);


//        HttpHeaders headers = response.getHeaders();
//        LocalData.Web.storeCookie(headers, context);

        return response;
    }

    @Override
    protected HashMap doInBackground(Void... voids) {
        try{
            return request().getBody();
        }
        catch (Exception e){
            Log.e("error", e.getMessage());
            return null;
        }

    }

主要是它正确连接到该服务,但有时会出现一些异常,获取此消息:

I/O error: recvfrom failed: ECONNRESET (Connection reset by peer); nested exception is java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)

什么可能导致此错误?

注意:

以前一直工作得很好,但是现在我经常遇到这个问题。是android问题还是我在WCF端搜索问题?

最佳答案

在连接之前尝试设置 HttpURLConnection:

conn.setRequestProperty("connection", "close");

您也可以看看this link 。 Android 维护连接池并首先使用旧的连接池,因此通过设置此属性,您将禁用默认情况下启用的 keep-alive 属性。

为此,您必须创建 RestTemplate HttpComponentsClientHttpRequestFactor

@Bean
RestTemplate restTemplate(SimpleClientHttpRequestFactory factory) {
   return new RestTemplate(factory);
}

Check this link

and this one

关于java - Android 到 WCF 连接被对等方重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48767986/

相关文章:

java - Jackson 序列化后功能

java - 打印数字三角形

android - 如何在 Android 中使用 SQLite 获得最佳性能?

android - 如何在没有构造函数的情况下为对象实例化设置断点?

android - 自应用程序在 Android 中打开以来的时间

使用 basicHttpBinding 的 WCF 服务仍在发送内容类型 "text/xml"

c# - 使用 WCF 的跨域 SignalR

java - 在实体和 DTO 之间映射非空字段的最佳方法是什么?

c# - 更改 WCF 中的默认日期序列化

java - Apache poi 单元格格式 (°) 度数符号