Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google shortener url在java中的值无效_Java_Url - Fatal编程技术网

Google shortener url在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);

我面临着谷歌短网址的问题

以下是我的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);

    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"
 }
}