在Java 1.6版本中使用Rest-Webservice

时间:2018-08-01 07:57:03

标签: rest jersey jax-rs apache-httpclient-4.x java-6

需要在使用Java 1.6版本的Rest Web服务中使用post方法,我曾经使用Jersey jar连接Web服务,但是在iam在JAVA 1.6版本中运行它时却遇到了连接休息错误,但是使用Java 1.7和1.8可以正常工作。 / p>

有人可以帮助我使用JAVA 1.6版本实现这一点,因为我需要在运行于Java 1.6的服务器上进行部署。

我正在连接到网址:https://(安全网址)

下面的代码:

import java.util.ArrayList;

import javax.ws.rs.client.Client;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import com.sun.jersey.api.client.WebResource;
import com.thortech.util.logging.Logger;

public class MFARestClientService {

   public static void main(String[] args) {

        MFARestClientService mfa1=new MFARestClientService();
        ArrayList userList = new ArrayList();
        userList.add("test1");
        userList.add("Test2");

        mfa1.postMFAUser(userList);
    }


    Logger logger = Logger.getLogger("RestClientService");
    //Method To post data to AsureCloud
       public void postUser(ArrayList<String> userList)
       {

        JSONObject obj = new JSONObject();
        String url = "https://***.azurew.net/********************************/*****";
        this.logger.info("Reached RestClientService");
        this.logger.info("Get UserDetails from OIM usr table and creating json value");

        obj.put("group", "ABC-99");
        obj.put("userid", userList);
        String jsondata=obj.toJSONString();
        System.out.println("JSONDATA :"+jsondata);


      {
       try {

           this.logger.info(jsondata);
           Client restClient = Client.create();
           WebResource webResource = restClient.resource(url);
           ClientResponse response = webResource.accept("application/json").post(ClientResponse.class,jsondata);
           if (response.getStatus() != 200) {
               throw new RuntimeException("Failed : HTTP error code : "  + response.getStatus());

            }
             String output = response.getEntity(String.class);
             System.out.println("Output from Server .... \n");
             this.logger.info("Output from Server .... \n");
             this.logger.info(output);
             System.out.println(output);

         } catch (Exception e) {

             e.printStackTrace();

         }

       }
      }
}

错误: 连接重置

但是此代码在Java 1.7和1.8中正常工作

需要帮助以使用Java 1.6版本来使用它

谢谢 Midhun M S

1 个答案:

答案 0 :(得分:0)

我看到您的网址正在使用https协议。如果它在Java 1.7中工作,而在Java 1.6中不工作,则很可能是客户端和服务器之间的握手问题。 Java 1.6仅支持TLS 1.0,而Java 1.7或1.8支持TLS 1.0,TLS 1.1和TLS 1.2。您可能必须使用第三方API(例如Bouncy Castle)才能获得TLS 1.2支持。我强烈建议您升级到Java的更高版本。祝你好运