Google shortener url在java中的值无效
我面临着谷歌短网址的问题 以下是我的java代码:Google shortener url在java中的值无效,java,url,Java,Url,我面临着谷歌短网址的问题 以下是我的java代码: public static String shortenUrl(String longUrl) { String GOOGLE_URL_SHORT_API = "https://www.googleapis.com/urlshortener/v1/url"; String GOOGLE_API_KEY = MYAPIKEY; Logger.info("LONG URL IS ==> "+longUrl);
public static String shortenUrl(String longUrl)
{
String GOOGLE_URL_SHORT_API = "https://www.googleapis.com/urlshortener/v1/url";
String GOOGLE_API_KEY = MYAPIKEY;
Logger.info("LONG URL IS ==> "+longUrl);
String shortUrl="";
if (longUrl == null) {
Logger.info("LONGURL NULL");
return longUrl;
}else if(!longUrl.startsWith("http://") && !longUrl.startsWith("https://")){
longUrl = "http://"+longUrl;
}
try {
String json = "{\"longUrl\": \""+longUrl+"\"}";
String apiURL = GOOGLE_URL_SHORT_API+"?key="+GOOGLE_API_KEY;
HttpPost postRequest = new HttpPost(apiURL);
postRequest.setHeader("Referer", "servizio.wiforwater.xom");
postRequest.setHeader("Content-Type", "application/json");
postRequest.setEntity(new StringEntity(json, "UTF-8"));
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpResponse response = httpClient.execute(postRequest);
String responseText = EntityUtils.toString(response.getEntity());
Logger.info("responseText ==> "+responseText);
Gson gson = new Gson();
@SuppressWarnings("unchecked")
HashMap<String, String> res = gson.fromJson(responseText, HashMap.class);
String result = res.get("id");
Logger.info("result is ==> "+result);
return result;
} catch (MalformedURLException e) {
return "MalformedURLException error";
} catch (IOException e) {
return "IOException error";
}
}
我在我的谷歌控制台开发者中配置了一切,并在互联网上搜索了一切可能的东西
有人能告诉我哪里做错了吗
多亏了所有的您所面临的一个主要问题是,您在没有正确的JSON转义的情况下通过字符串连接构建JSON请求:
String json=“{\“longUrl\”:\”+longUrl+“\”}”代码>
常用的方法是使用JSON库,使用JSON库设置所有属性,最后只检索正确转义的字符串表示
如果您没有使用JSON库,则在将其粘贴到JSON字符串之前,至少应在longUrl上应用JSON编码/转义。我已尝试使用映射修改代码。”Map json=new TreeMap();put(“longUrl”,longUrl);字符串myJson=gson.toJson(json);'但是没有任何变化我只是尝试了您的示例代码,使用ApacheCommonsHTTP4.5.3,它是现成的。您正在测试哪些URL?那么来自google的错误消息是有意义的。127.0.0.1不是url缩短器的有效域。使用不同的URL。我真是个傻瓜,哈哈,整整一个上午都在犯分心的错误。现在它工作得很好,谢谢!!!
[info] application - responseText ==> {
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "Invalid Value",
"locationType": "parameter",
"location": "resource.longUrl"
}
],
"code": 400,
"message": "Invalid Value"
}
}