我正在嘗試用澤西1.5寫一個POST調用谷歌翻譯。這是我的代碼:與澤西返回HTTP進行谷歌翻譯POST調用HTTP 404
package main;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.core.util.MultivaluedMapImpl;
import javax.ws.rs.core.MultivaluedMap;
public class Main {
private static String GOOGLE_TRANSLATE_URL = "https://www.googleapis.com/language/translate/v2";
private static String translateString(String sourceString, String sourceLanguage, String targetLanguage) {
String response;
Client c = Client.create();
WebResource wr = c.resource(GOOGLE_TRANSLATE_URL);
MultivaluedMap<String, String> params = new MultivaluedMapImpl();
params.add("q", sourceString);
params.add("source", sourceLanguage);
params.add("target", targetLanguage);
params.add("key", "xxxx");
wr.header("X-HTTP-Method-Override", "GET");
response = wr.post(String.class, params);
return response;
}
public static void main(String[] args) {
System.out.println(translateString("Hello", "en", "sv"));
}
}
當我運行,這一切我回來是這樣的:com.sun.jersey.api.client.UniformInterfaceException: POST https://www.googleapis.com/language/translate/v2 returned a response status of 404
。
我已經成功像這樣用一個簡單的捲曲的命令來實現:
curl --header "X-HTTP-Method-Override: GET" -d key=xxxx -d q=Hello -d source=en -d target=sv https://www.googleapis.com/language/translate/v2
提前感謝!
你爲什麼要使用POST,如果你有一個空的身體嗎?嘗試使用GET。 – 2011-01-21 08:50:06
我想使用POST的原因是因爲否則在翻譯非常長的文本時,我將受限於URL的長度。瀏覽器和服務器實現之間的URL長度似乎有很大差異。 http://www.boutell.com/newfaq/misc/urllength.html – vrutberg 2011-01-21 09:15:33