gpt4 book ai didi

Java,使用 goo.gl API 缩短 URL?

转载 作者:行者123 更新时间:2023-11-30 07:07:54 27 4
gpt4 key购买 nike

我正在尝试在不使用外部库的情况下使用 Java 执行此操作。我不能使用外部库来执行此操作,因为我没有在这个项目中使用 Maven。

我使用的方法是:

public static String shorten(String longUrl) {
if (longUrl == null) {
return longUrl;
}

StringBuilder sb = null;
String line = null;
String urlStr = longUrl;

try {
URL url = new URL("https://www.googleapis.com/urlshortener/v1/url");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("User-Agent", "toolbar");

OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write("url=" + URLEncoder.encode(urlStr, "UTF-8"));
writer.close();

BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
sb = new StringBuilder();
while ((line = rd.readLine()) != null) {
sb.append(line + '\n');
}

String json = sb.toString();
return json.substring(json.indexOf("http"), json.indexOf("\"", json.indexOf("http")));
} catch (MalformedURLException e) {
e.printStackTrace();
return longUrl;
} catch (IOException e) {
e.printStackTrace();
return longUrl;
}
}

我得到的错误是:

[23:30:44 WARN]: java.io.IOException: Server returned HTTP response code: 400 for URL: https://www.googleapis.com/urlshortener/v1/url
[23:30:44 WARN]: at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1838)
[23:30:44 WARN]: at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
[23:30:44 WARN]: at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)

如果此方法不起作用,是否有一些不需要外部 jar 的简单 Java URL 缩短替代方案?感谢您的帮助!

编辑

api 的 url 是错误的。也用新错误更新了它。

最佳答案

尝试使用此代码将您的链接重定向到最终目的地。虽然它使用 Apache HTTP 客户端库。这是我可以成功重定向到每个可能的有效链接的唯一方法。其他方法对我来说准确性较低。

private static String linkCorrector(String link) throws ClientProtocolException, IOException{
HttpClient client = new DefaultHttpClient();
HttpParams params = client.getParams();
HttpClientParams.setRedirecting(params, false);
HttpGet method = new HttpGet(link);
HttpResponse resp = client.execute(method);
String location = null;
Header h = resp.getLastHeader("Location");
if(h == null || h.getValue() == null){
location = "";
}
else{
location = resp.getLastHeader("Location").getValue();
}
return location;
}

关于Java,使用 goo.gl API 缩短 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24445170/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com