首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从安卓发布到goo.gl

从安卓发布到goo.gl
EN

Stack Overflow用户
提问于 2011-05-19 07:22:22
回答 2查看 2.1K关注 0票数 3

继续获取以下内容:

代码语言:javascript
复制
V/RESPONSE(13605):  {
V/RESPONSE(13605):  "error": {
V/RESPONSE(13605):   "errors": [
V/RESPONSE(13605):    {
V/RESPONSE(13605):     "domain": "global",
V/RESPONSE(13605):     "reason": "parseError",
V/RESPONSE(13605):     "message": "This API does not support parsing form-encoded input."
V/RESPONSE(13605):    }
V/RESPONSE(13605):   ],
V/RESPONSE(13605):   "code": 400,
V/RESPONSE(13605):   "message": "This API does not support parsing form-encoded input."
V/RESPONSE(13605):  }
V/RESPONSE(13605): }

使用以下代码:

代码语言:javascript
复制
String apiKey = "blahblahblah";
String address="https://www.googleapis.com/urlshortener/v1/url";
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(address);
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("key", apiKey));
pairs.add(new BasicNameValuePair("longUrl", original));

try {
    post.setEntity(new UrlEncodedFormEntity(pairs));
} catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

try {
    org.apache.http.HttpResponse response = client.execute(post);
    String responseBody = EntityUtils.toString(response.getEntity());
    Log.v("RESPONSE"," "+responseBody);
} catch (ClientProtocolException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    tinyUrl="Protocol Error";
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    tinyUrl="IO Error";
}

我不确定如何格式化它。有什么想法吗?

我试着删除UrlEncodedFormEntity,但当然不会起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-19 07:44:59

您需要以json格式发送数据,而不是像您试图做的那样以表单编码的形式发送数据。

请看一下文档here

将实体更改为StringEntity,如下所示:

代码语言:javascript
复制
post.setEntity(new StringEntity("{\"longUrl\": \"http://www.google.com/\"}"));

同时设置请求的内容类型:

代码语言:javascript
复制
post.setHeader("Content-Type", "application/json");
票数 4
EN

Stack Overflow用户

发布于 2014-10-31 06:12:27

还可以考虑使用我制作的库,它提供了一个很好的接口,可以使用Goo.gl服务缩短您的urls。

它支持api密钥,使用起来非常简单:

代码语言:javascript
复制
GoogleShortenerPerformer shortener = new GoogleShortenerPerformer(new OkHttpClient());

String longUrl = "http://www.andreabaccega.com/";

GooglShortenerResult result = shortener.shortenUrl(
    new GooglShortenerRequestBuilder()
        .buildRequest(longUrl)
    );
if ( Status.SUCCESS.equals(result.getStatus()) ) {
    // all ok result.getShortenedUrl() contains the shortened url!
}

看一下包含更多信息的github repo here :)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6052156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档