2016-08-06 6 views
0

私は現在、このドメインの技術を向上させるために、安静時のアプリケーションを作成しています。正直言って、私はjspとサーブレットで長い時間前に作業していましたが、残りのJSON上のjsonは新しい作業方法です。だから私はなぜそれをしないだろうと言った。 まず、私の古いアプリケーションサーバーのTomcat(私はこの猫が大好きです)をwuthしています。私が見たものに従いましたhttp://www.lessonslab.com/building-restful-webservices-using-apache-cxf/150/ポストjsonはパラメータのnullを受け取ります

本当にいいですし、GETサービスやPOSTサービスも簡単に作成できました。しかし、POSTメソッドでは、私はnullオブジェクトを受け取ります。ここに私が持っているものがあります。私のbeans.xmlので

:ここに続いて

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:jaxws="http://cxf.apache.org/jaxws" 
xmlns:jaxrs="http://cxf.apache.org/jaxrs" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd 
http://cxf.apache.org/jaxrs 
http://cxf.apache.org/schemas/jaxrs.xsd 
http://cxf.apache.org/jaxws 
http://cxf.apache.org/schemas/jaxws.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-4.1.xsd"> 

<import resource="classpath:META-INF/cxf/cxf.xml" /> 
<context:component-scan base-package="com.bdproject.*" /> 

<jaxrs:server id="createAccount" address="/createAccount"> 
    <jaxrs:providers> 
     <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" /> 
    </jaxrs:providers> 
    <jaxrs:serviceBeans> 
     <ref bean="ProfileCXFServiceImpl" /> 
    </jaxrs:serviceBeans> 
    <jaxrs:extensionMappings> 
     <entry key="xml" value="application/xml" /> 
     <entry key="json" value="application/json" /> 
    </jaxrs:extensionMappings> 
</jaxrs:server> 

<bean id="ProfileCXFServiceImpl" class="com.bdproject.cxfrestservice.ProfileCXFServiceImpl"/> 

は私profileCxf

package com.bdproject.cxfrestservice; 

    import javax.jws.WebService; 
    import javax.ws.rs.Consumes; 
    import javax.ws.rs.POST; 
    import javax.ws.rs.Path; 
    import javax.ws.rs.Produces; 
    import javax.ws.rs.QueryParam; 
    import javax.ws.rs.core.MediaType; 
    import javax.ws.rs.core.Request; 
    import javax.ws.rs.core.Response; 

    /** 
    * 
    * @author lessonslab.com 
    * This is interface for the employee services 
    * 
    */ 
    @Path("/") 
    @WebService(name="createAccount", targetNamespace="") 
    public interface ProfileCXFService 
    { 

     @POST 
     @Path("/createAccount") 
     @Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON}) 
     @Consumes(MediaType.APPLICATION_JSON) 
     public Response createAccount(@QueryParam("CreateAccountRQ") Request createAccountRQ); 

    } 

、今の私のimplです:

 package com.bdproject.cxfrestservice; 

    import javax.ws.rs.core.Request; 
    import javax.ws.rs.core.Response; 

    public class ProfileCXFServiceImpl implements ProfileCXFService{ 

     @Override 
     public Response createAccount(Request createAccountRQ) { 
     // TODO Auto-generated method stub 
     return null; 
     } 

    } 

あなたはNYのIMPLはかなり空であることがわかります:)

私はあなたです私がGETをしているときにうまく働いている郵便配達員を歌いなさい。投稿の場合、私はヌルオブジェクトを受け取ります。

{ 
    "CreateAccountRQ": { 
    "-xsi:noNamespaceSchemaLocation": "schema.xsd", 
    "-xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", 
    "ProfileInformation": { 
     "-ProfileID": "String", 
     "-Name": "String", 
     "-Surname": "text", 
     "Personnal": { 
     "Contacts": { 
      "Contact": [ 
      { 
       "-Type": "String", 
       "-Name": "String", 
       "PhoneContact": { 
       "Description": { 
        "-Value": "4545454554", 
        "-AreaCode": "06", 
        "-OverseaCode": "+33" 
       } 
       } 
      } 
      ] 
     } 
     } 
    }, 
    "AccountInformation": { 
     "emailAddress": "String", 
     "Password": "String" 
    } 
    } 
} 

は、私のような多くのことを試してみました:

@POST 
@Path("/createAccount") 
@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON}) 
@Consumes(MediaType.APPLICATION_JSON) 
public Response createAccount(@PathParam("CreateAccountRQ") Request createAccountRQ); 

私が受けていたオブジェクトをデバッグしていたアカウントを作成することanoyingかなりあるnullです:) は私が到着する多くのことを検索しましたその時点で質問をしなくても、今は何時間もブロックされています。(たぶん、あなたは私が何かを見つけられなかったポストのような愚かな事をどこかでやっていたと私は言っています。私たちはフランス語でそれを言っているのと同じように "つかむ"を意味する "taton"

おかげさまで、この問題の簡単な解決策を見つけることを願っています:)

+0

だから間違いました。実際には: create accountMethodは でなければなりません。 'public Response createAccount(CreateAccountRQ createAccountRQ);' CreateAccountRQは! @XMLRootElement 単純なオブジェクトで動作させることができました。しかし、この1つでは、私はまだnullを受け取っているようです。私は調査を続ける – Geoffrey

答えて

0

これは問題ありません。私は解決策を見つけた。 実際に私はパラメータを削除し、UPPERの場合は最初の文字を削除してjsonを変更し、CreateAccountRQ内のものだけを取り出しました

関連する問題