当前位置: 首页 > 知识库问答 >
问题:

如何通过SSL实现RESTful服务?

朱天逸
2023-03-14

在Eclipse中运行RESTful客户端时,出现以下错误:

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(Unknown Source)
    at sun.net.NetworkClient.doConnect(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source)
    at com.elkay.client.RestClient.main(RestClient.java:23)

在浏览器中调用时,URL不会被阻止。如何通过客户端使用它?

TIA!

编辑:(客户端代码)

public class RestClient {

    public static void main(String[] args) {

          try {

            URL url = new URL("https://www.xyz.com");


            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            DataOutputStream printout = new DataOutputStream(conn.getOutputStream());  
            String authString=URLEncoder.encode("username=anushree&password=anushree","UTF-8");  
            printout.writeBytes (authString);  
            printout.flush ();   
            printout.close ();  

            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");

            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : "
                        + conn.getResponseCode());
            }

            BufferedReader br = new BufferedReader(new InputStreamReader(
                (conn.getInputStream())));

            String output;
            System.out.println("Output from Server .... \n");
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }

            conn.disconnect();

          } catch (MalformedURLException e) {

            e.printStackTrace();

          } catch (IOException e) {

            e.printStackTrace();

          }

        }


}

共有1个答案

郭凡
2023-03-14

也试试这样。//在标头中设置基本身份验证

 String userPassword = "password"; 
 String encoding = new sun.misc.BASE64Encoder().encode(userPassword.getBytes()); 
 conn.setRequestProperty("Authorization", "Basic " + encoding); 
 String parameters = "username=" + URLEncoder.encode("user1", "UTF-8") + "&password=" + URLEncoder.encode("user1password", "UTF-8"); 
 printout.writeBytes (parameters);  
 类似资料:
  • 问题内容: 我目前正在使用HTTP方法来调用一些URL,这将导致JIRA问题。 现在,我想使用Apache Camel,该如何使用? 我需要通过骆驼调用以下链接: 由于我是Camel的新手,因此也请提出一些解决方案和示例。 谢谢 问题答案: 您可以轻松使用CXFRS组件;如果出于某种原因需要使用HTTP组件进行操作,则也可以轻松地使用它: 当然,在到达路由的这一部分之前,您将需要使用标头来丰富您的

  • 问题内容: 如何构建一个Android应用程序以启动A 以使用,以便在修改观察到的目录(即用户拍照)后执行其他代码。调试时,永远不会触发onEvent方法。 这是我在服务中遇到的onStart事件。在对火灾“我的服务开始......” 但是在那次Toast之后,如果我拍照,则onEvent永远不会触发。这是通过调试确定的。它永远不会碰到那个断点,而Toast也不会触发。 浏览该目录后,新图像将保存

  • 本文向大家介绍如何通过Python3和ssl实现加密通信功能,包括了如何通过Python3和ssl实现加密通信功能的使用技巧和注意事项,需要的朋友参考一下 一、说明 1. python标准库ssl可实现加密通信 2. ssl库底层使用openssl,做了面向对像化改造和简化,但还是可以明显看出openssl的痕迹 3. 本文先给出python实现的socket通信,在此基础上再给出ssl通信以便读

  • 问题内容: 我是第一次编写Web服务。我基于Jersey创建了一个RESTful Web服务。而且我想 产生JSON 。我需要怎么做才能生成正确的Web服务的JSON类型? 这是我的方法之一: 仅指出方法的注释就足够了吗?那么此方法可能返回任何类型的对象?还是只有String?我是否需要对这些对象进行其他处理或转换? 作为初学者,请帮助我解决这些问题。提前致谢! 问题答案: 您可以使用jaxb注释

  • 我第一次编写web服务。我基于Jersey创建了一个RESTful web服务。我想制作JSON。要生成web服务的正确JSON类型,我需要做什么? 这是我的方法之一: 我简单地为我的方法指出注释就足够了吗?那么这个方法可能返回任何类型的对象?或者只返回String?我是否需要对这些对象进行额外的处理或转换? 作为初学者,请帮助我解决这些问题。提前谢谢!

  • 问题内容: 我知道如何使用证书保护Web服务。那是我的客户代码: 现在,如何制作“简单SSL”?如何进行SSL连接而不在客户端存储证书。(就像通过浏览器中的HTTPS连接一样) 问题答案: Java Runtime Environment确实在cacerts文件中附带了很多(使用最广泛的)证书颁发机构。如果您用来保护服务安全的证书是由那些根CA之一签名的,则您不必担心与客户端共享任何证书。 但是,