簡體   English   中英

客戶端將json傳遞到Webservice jersey中的服務器(無maven)

[英]client passing json to server in webservice jersey(without maven)

我正在嘗試從客戶端程序(作為Web應用程序創建的WebService)將json傳遞到我的Web服務。客戶端程序是用核心Java編寫的。基於http://examples.javacodegeeks.com/enterprise-java/rest/jersey/ json-example-with-jersey-jackson /教程我編寫了我的客戶端程序。我需要知道如何運行我的程序。(使用JERSEY NOT MAVEN)。在沒有客戶端的時候,我對json進行了硬編碼並獲得了很好的響應。在添加客戶端的情況下,客戶端程序包含main()方法,我很困惑,需要了解如何運行它。我將放置代碼以進一步理解。任何人都可以提供有關我的債權的文檔嗎? ...

Postjson.java

public class Postjson {
        public static void main(String[] args) {
            System.out.println("inside postjson classfor posting request");
             try {
//               Student st = new Student("Adriana", "Barrer", 12, 9);
Clientdetails cld=new Clientdetails("request","AuthenticationType","test@gmail.com",12345,"null","null");
//               String JSON_DATA =
//                       "{" 
//                         + "  \"SnapshotRequest\": [" 
//                         + "    {" 
//                         + "      \"AuthenticationType\": \"email\"," 
//                         + "      \"EmailAddress\": \"test@gmail.com\","                  
//                         + "      \"Password\" : \"12345\"," 
//                         + "      \"PracticeID\" : \"null\"," 
//                         + "      \"DeviceID\" : \"null\""
//                         + "    } +   ]"
//                     + "}";
//                Clientdetails cld=new Clientdetails();
//                cld.setUsername("test@gmail.com");
//                cld.setPassword("password");
//                cld.setDevice_id("12345");
//                           Student st = new Student("Adriana", "Barrer", 12, 9);
                                ClientConfig clientConfig = new DefaultClientConfig();
                                clientConfig.getFeatures().put(
                 JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
                                Client client = Client.create(clientConfig);
                 WebResource webResource = client
                 .resource("http://localhost:9090/Snapshothealthapp1/rest/customers/get");
                 System.out.println("after url step");
                 ClientResponse response = webResource.accept("application/json")
                         .type("application/json").post(ClientResponse.class, cld);
                 System.out.println("after passing json object");
                 if (response.getStatus() != 200) {

                                 throw new RuntimeException("Failed : HTTP error code : "

                                         + response.getStatus());

                             }



                             String output = response.getEntity(String.class);



                             System.out.println("Server response .... \n");

                             System.out.println(output);



                         } catch (Exception e) {



                             e.printStackTrace();



                         }

        }

身份驗證.java

   import javax.ws.rs.Consumes;
    import javax.ws.rs.GET;
    import javax.ws.rs.POST;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Request;
    import javax.ws.rs.core.Response;

    import com.snapshothealthapp1.client.Clientdetails;
    import com.snapshothealthapp1.model.AuthenticationModel;
    @Path("/customers")
    public class Authentication {
        @POST
        @Path("/get")
        @Consumes(MediaType.APPLICATION_JSON)
        public Response getRequestUrl(Clientdetails s) {
            //TODO:Create a JSON(recieved from client request)
    //      JSONObject jsonClient = new JSONObject(); 
            System.out.println("inside Authentication");

             String output = s.toString();

             return Response.status(201).entity(output).build();
        }

web.xml

?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<servlet>
    <servlet-name>jersey-servlet</servlet-name>
    <servlet-class>
                     com.sun.jersey.spi.container.servlet.ServletContainer
                </servlet-class>

     <init-param>

      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.snapshothealthapp1.controller</param-value>
    </init-param>
    <init-param>

        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>

        <param-value>true</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
        <servlet-name>jersey-servlet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

如何使用主方法和另一資源方法來運行一個項目。如果不可能,請告訴輔助方法來執行它? 我保持服務器運行,並運行main方法(客戶端代碼)。但這給了我錯誤。 錯誤發布在下面

com.sun.jersey.api.client.ClientHandlerException: com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class com.snapshothealthapp1.client.Clientdetails, and MIME media type, application/json, was not found
    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149)
    at com.sun.jersey.api.client.Client.handle(Client.java:648)
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:670)
    at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
    at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:563)
    at com.snapshothealthapp1.client.Postjson.main(Postjson.java:40)
Caused by: com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class com.snapshothealthapp1.client.Clientdetails, and MIME media type, application/json, was not found
    at com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWriter.java:288)
    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:204)
    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:147)
    ... 5 more

當我剛進入這個領域時,我感到困惑的是這種方法是否正確。任何人都可以幫助我。任何幫助將是非常可貴的....

根據您鏈接到的教程,它使用此Maven依賴項來支持JSON / POJO。

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>1.9</version>
</dependency>

這種依賴關系引入了許多其他依賴關系(這就是我們使用Maven的原因:-)

因此,您需要確保擁有以下所有罐子

在此處輸入圖片說明

您可以在此處搜索並下載它們

您擁有的所有其他東西都很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM