2012-10-08 32 views
1

我正在使用Apache的HttpClient從Java類調用一個servlet。我想發送一個對象到servlet,它應該使用序列化保存對象。如何將對象發送到servlet?如何將對象從java類傳遞給servlet?

public static void main(String[] args) { 

     Names names = new Names(); 
     names.setName("ABC"); 
     names.setPlace("Bangalore"); 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpGet httpget = new HttpGet("http://localhost:9080/HttpClientPractice/FirstServlet"); 
//Rest of the code 

在上面的代碼片段中,我有另一個類名稱,我想發送名稱的對象到servlet。現在我只使用URI調用servlet,但我想傳遞該對象。

謝謝!

+2

我想你需要看看POST方法來發送這樣的數據。我相信用GET方法,你只能發送文本數據。 – midhunhk

+0

@silverback POST方法。謝謝! – Rajath

回答

2

將對象轉換爲JSON字符串,使用類庫中的Gson,並將此字符串作爲查詢參數添加 - 顯示如何使用Gson執行此操作。

Gson gson = new Gson(); 
String json = gson.toJson(names); 
HttpGet httpget = new HttpGet("http://localhost:9080/HttpClientPractice/FirstServlet?obj="+json); 

在你要存儲這些對象的類,做一個fromJson(在GSON庫法)

Gson gson = new Gson(); 
Names names = fromJson(json, Names.class); 
+0

明白了!我使用'HttpPost()'而不是'HttpGet()',並將字符串** json **作爲鍵值對的值發送。 – Rajath

+0

我得到了一個** java.lang.ClassNotFoundException:com.google.gson.Gson **行'Gson gson = new Gson()'。任何想法爲什麼會發生? – Rajath

1

對象發送到一個URL,最好的辦法是把它無論是作爲XML或JSON,而不是序列化對象併發送它。發送的對象,如果你的方法是一樣的

一種方法是在URL連接對象的值作爲查詢字符串如:
http://localhost:9080/HttpClientPractice/FirstServlet?name=ABC&place=Banglore
另一種方法是改變請求方法發佈和發送作爲XML或JSON內容的對象。

+0

謝謝,明白了你的意思。但一個澄清。我想讓servlet序列化我發送的對象,我不想發送序列化的對象。 – Rajath

+1

@Rajath所以,你想要一隻小馬。爲了通過網絡發送一個對象,你必須序列化它。 Java中沒有其他方法。它可能被稱爲「編組」,「編碼」,無論如何,仍然存在序列化的地方。 – MaDa

相關問題