2017-01-04 2 views
4

私はチュートリアルに続き、またStackoverflowの質問hereを使用しています。Java Jerseyアプリケーションでクエリパラメータを使用するには?

GET>> localhost/api/get?user=123 

応答されています:

{"auth":true} 

Serverコンソール:

package com.crunchify.tutorial; 

import javax.ws.rs.DefaultValue; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Consumes; 
import javax.ws.rs.QueryParam; 
import javax.ws.rs.core.Context; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.MultivaluedMap; 
import javax.ws.rs.core.UriInfo; 
import org.json.simple.JSONObject; 

@Path("api") 
public class CrunchifyAPI { 

    @SuppressWarnings("unchecked") 
    @GET 
    @Path("/get") 
    @Consumes(MediaType.TEXT_PLAIN) 
    public String get(
      @DefaultValue("111") @QueryParam("user") int user, 
      @Context UriInfo uriInfo 
      ) { 
     MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters(); 
     String nameParam = queryParams.getFirst("user"); 
     System.out.println("Data Received: " + uriInfo.getRequestUri().getQuery() 
       + " | " + nameParam); 
     JSONObject obj = new JSONObject(); 
     obj.put("auth", true); 
     String ret = JSONObject.toJSONString(obj); 
     return ret; 
    } 
} 

後は、私は郵便配達からGET'ingていますものです: はここに私のJavaクラスです

Starting Crunchify's Embedded Jersey HTTPServer... 

Started Crunchify's Embedded Jersey HTTPServer Successfully !!! 
Data Received: ?user=123 | null 
User Authenticated: true 

String、Integerなどを渡してみましたが、何も動作しません。 uri Infoは正しく印刷されており、返答もうまくいきます。問題は、Javaコードでパラメータを読み取らないということです。私はこれを得ることができたら、他の多くのパラメータを渡す必要があります。提案してください。ありがとう!!

+0

サーバーコンソールで次のように出力されることを期待しています: 'データ受信:?ユーザー= 123 | 123 ' 同様に、後でStringと(可能であればJSONかもしれません)を渡したいと思います。 –

答えて

1

@QueryParam( "ユーザー")のintユーザー

そのユーザのint型の値が123

https://www.mkyong.com/webservices/jax-rs/jax-rs-queryparam-example/

+0

はい。私は次の行にnullではなく123を表示することを期待しています: 'String nameParam = queryParams.getFirst(" user "); System.out.println( "受信データ:" + uriInfo.getRequestUri()。getQuery()+ "|" + nameParam); ' 文字列と整数にintを変更しようとしました。何も動作しません! –

+0

を試してみてくださいSystem.out.println(user); –

+0

私はこれを試して、デフォルト値のnullの代わりに111を表示します。 'String nameParam = queryParams.getFirst(" user ");System.out.println( "受信データ:" + uriInfo.getRequestUri()。getQuery()+ "|" + nameParam); System.out.println(user); ' 結果: 'データ受信:?ユーザー= aaaaa | null 111' - **は** 123 ** –

0

を参照してくださいする必要がありますまあ、私はあなたがJava型に問題を抱えていると思います。

ユーザーは、あなたがStringInteger.toString()またはString.valueof())で作業したい場合は、最初Stringにそれを渡す必要Integerある場合。

しかし、あなたがパラメータを渡す方法は私を悩ませています、私はあなたがテキスト平凡メディタイプで整数を渡すことができるかどうかはわかりません。

2

あなたはあまりにも難しいと思っています。すべての場合、クエリ文字列を持つすべてのこと余分なものが必要とされていない

package com.crunchify.tutorial; 

import javax.ws.rs.DefaultValue; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Consumes; 
import javax.ws.rs.QueryParam; 
import javax.ws.rs.core.Context; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.MultivaluedMap; 
import javax.ws.rs.core.UriInfo; 
import org.json.simple.JSONObject; 

@Path("api") 
public class CrunchifyAPI { 

    @SuppressWarnings("unchecked") 
    @GET 
    @Path("/get") 
    @Consumes(MediaType.TEXT_PLAIN) 
    public String get(
      @DefaultValue("111") @QueryParam("user") Integer user, 
      @Context UriInfo uriInfo 
      ) { 
     System.out.println("Data Received: " + uriInfo.getRequestUri().getQuery() 
       + " | " + name); 
     JSONObject obj = new JSONObject(); 
     obj.put("auth", true); 
     String ret = JSONObject.toJSONString(obj); 
     return ret; 
    } 
} 

:?私の知る限り、次の操作を実行すると、ユーザー= 123はlocalhost/API /取得を呼び出す場合は何をしたいあなたを取得する必要があります情報がuserパラメータで渡される必要があります。

関連する問題