2016-04-07 5 views
1

olarak verilen daha fazla karakter yanıt vermiyor Uygulamam için API oluşturmak için RESTEasy hizmetleri üzerinde çalışıyorum. Aşağıdaki urlREST API, sorgu parametresi

http://localhost:8080/myApp/f/api?from=any_string_here 

Fakat, mevcut bu yanıtı ile iyi çalışıyor

@GET 
@Path("/api") 
public Response getUsers(@QueryParam("from") String from,) throws ProtocolException, 
     MalformedURLException, IOException {   

    return Response.status(200) 
      .entity("*************Hi Welcome*********************") 
      .build(); 
} 

ben basit dize tepkisi üretmek için aşağıdaki kodu ile test

, sadece sorgu parametresi ise 6246 karakteri geçmez.

Sorgu parametresi değeri 6246 karakterden fazlaysa, uygun yanıt yoktur. Ayrıca, tarayıcı ağ konsolu daha uzun url POST kullanarak göndermek olması gerektiğini okumak 400.

http://localhost:8080/myApp/f/api?from=more_than_6246_chars 

durum kodu gösterir, bu yüzden bu çok @POST yöntemi ile de çalıştı, ancak tarayıcı ağ konsol durumunu gösterir Kod 405 ve aşağıdaki eclipse konsolunda görünür.

Apr 07, 2016 12:52:25 PM org.apache.tomcat.util.http.Cookies processCookieHeader 
INFO: Cookies: Invalid cookie. Value not a token or quoted value 
Note: further occurrences of Cookie errors will be logged at DEBUG level. 

Bu daha uzun URL, tarayıcı veya RESTEasy uygulamasıyla kısıtlanmış mı?

Bunun için çözüm ne olurdu? Dinlenme api parametresine daha fazla karakter göndermem gerekir mi?

cevap

1

Web sunucusu, URL belirli bir boyutu aşarsa istekleri reddedebilir.

Tek başına bir POST isteği kullanmak yardımcı olmuyor, URL parametrelerini POST gövdesine ekleyerek URL boyutunu da azaltmanız gerekiyor.

0

Parametreleri istek başlıklarına göndermeyi deneyebilirsiniz. Ön uçta Jersey çerçeve ve açısal JS kullanıyorum. Bazen başvurum için uzun bir JSON dizesi göndermem gerekiyor. İstek başlıklarına gönderiyorum ve şimdiye kadar böyle bir sorunum yok. Sen özel başlıklarında Parametrelerinizi gönderebilirsiniz

@Path("getStatus/agentName") 
public class getStatus(){ 
    @GET 
    public Response getStatus(@HeaderParam("header_name") String header_value){ 
     String response = "Success" + header_value; 
     return Response.ok(response, MediaType.TEXT_PLAIN).build(); 
    } 
} 

:

Benim istirahat Hizmet sınıfı aşağıda benziyor.

Sorununuzu çözmesi gerektiğini düşünüyorum. `http: sizin için

+0

Shreyas sayesinde url ... –

+0

Kişisel URL'yi verdik örneği düşünüldüğünde gibi görünmelidir gibi pls bu API tarayıcıda denir nasıl yardım edebilir, cevap // localhost: 8080/myapp/f/getStatus/agentName' – Shreyas

+0

Bu iyi Shreyas, ajan adı ne, ajan adı 7000 karaktere sahip mümkün mü? –