Java 尝试从RESTful API获取JSON对象时出现无连接错误

Java 尝试从RESTful API获取JSON对象时出现无连接错误,java,rest,android-studio,Java,Rest,Android Studio,我正试图从api获取有关用户ID 1的用户信息并记录它,但我一直遇到以下错误: E/Rest response: com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: SSL handshake aborted: ssl=0x7c74f2dc88: I/O error during system call, Connection reset by peer 这是我第一次使用RESTful API,所

我正试图从api获取有关用户ID 1的用户信息并记录它,但我一直遇到以下错误:

E/Rest response: com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: SSL handshake aborted: ssl=0x7c74f2dc88: I/O error during system call, Connection reset by peer
这是我第一次使用RESTful API,所以我有点经验不足。我试图找到解决堆栈溢出问题的方法,但它们似乎不起作用。我看到一些用户提到这是Android设备在低于Android API 22 5.1棒棒糖的情况下经常发生的错误,但是我正在使用Android 6.0棉花糖,并且仍然收到这个错误

这是我的代码:

public class MainActivity extends AppCompatActivity {

String url = "https://ecoproduce.eu/api/User/1";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

        final SSLSocketFactory sslSocketFactory;
        try {
            sslSocketFactory = new TLSSocketFactory();
            HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory);
        } catch (KeyManagementException ignored) {

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

    RequestQueue requestQueue = Volley.newRequestQueue(this);

    JsonObjectRequest objectRequest = new JsonObjectRequest(
            Request.Method.GET,
            url,
            null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.e("Rest response", response.toString());
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("Rest response", error.toString());
                }
            }
    );

    requestQueue.add(objectRequest);
}
public类MainActivity扩展了AppCompatActivity{
字符串url=”https://ecoproduce.eu/api/User/1";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终SSLSocketFactory SSLSocketFactory;
试一试{
sslSocketFactory=新的TLSSocketFactory();
HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory);
}捕获(忽略KeyManagementException){
}捕获(无算法异常){
e、 printStackTrace();
}
RequestQueue RequestQueue=Volley.newRequestQueue(this);
JSONObjectRequestObjectRequest=新的JsonObjectRequest(
Request.Method.GET,
网址,
无效的
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
Log.e(“Rest响应”,response.toString());
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.e(“Rest响应”,error.toString());
}
}
);
添加(objectRequest);
}

}

通过将url字符串从

String url = "https://ecoproduce.eu/api/User/1";

及加入

android:usesCleartextTraffic="true"
在android清单文件中。 在以下链接中找到答案:

您是否通过https为您的端点提供服务?看起来您使用的是纯HTTP,而Volley需要SSL握手。最初,url是http,但我将其更改为https,因为我收到以下错误:E/Rest响应:com.android.volley.NoConnectionError:java.io.IOException:不允许到ecoproduct.eu的明文http流量。将更改回http并找到另一个解决方案。请尝试从浏览器连接到右侧,并查看他们在SSL设置中是否存在问题。您的代码可能完全正常。
android:usesCleartextTraffic="true"