【问题标题】:Android application - Google Authorization via HTTP PostAndroid 应用程序 - 通过 HTTP Post 的 Google 授权
【发布时间】:2011-07-13 16:08:03
【问题描述】:

我只是想通过 HTTP POST 发送我的 Google 帐户身份验证数据。我已经构建了 HTTPpost(对 ArrayList 名称-值对进行 URL 编码)并执行了 HTTPClient 以获取 HTTPResponse。然而,这是问题开始的地方,每当我尝试调用其相关方法之一(getStatusLine 或 getEntity)时,我返回的 HTTPResponse 似乎都会返回异常。我还尝试通过简单的“if (null) else”类型检查来检查“null”响应,但仍然没有运气。

这个问题是因为我使用的是模拟器吗?

-----更新-----

我发现我收到了一个 NULL 指针响应,这会导致异常。因此,我访问 Google API 的方式存在问题。 URL 是“https://www.google.com/accounts/ClientLogin”,“Email”和“Passwd”是我用于 POST 请求的两个参数。

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("<URL HERE>");

try {

    List<NameValuePair> parameters = new ArrayList<NameValuePair>(2);
    parameters.add(<name_value_pair>);
    parameters.add(<name_value_pair>); 
    httppost.setEntity(new UrlEncodedFormEntity(parameters));


    HttpResponse response = httpclient.execute(httppost);

    StatusLine returned_status = response.getStatusLine();
    int status_code = returned_status.getStatusCode();


} catch (ClientProtocolException e) {
    // TODO Auto-generated catch block
} catch (IOException e) {
    // TODO Auto-generated catch block
}

}

【问题讨论】:

  • 你有 INTERNET 权限集吗?
  • 是的……!!!我已经设置好了...!!
  • 我要提到的另一件事是,我检查了 URL 是否格式错误。并不是说它应该受到伤害(无论如何我都应该收到错误响应)。我在网络浏览器上输入了 URL(带有名称-值对),我收到了来自 google 服务器的 200 OK 响应。
  • 是的,我会尽快完成的。也许我应该开始在云上保存更多的东西(代码在我家里的笔记本电脑上)。
  • 可能有助于显示异常的堆栈跟踪

标签: java android debugging httpclient http-post


【解决方案1】:

而不是使用 httpPost 使用 HttpRequest & 你还必须使用一个名为 Base64 和 Android 版本 2.1 &above 的库

    String data;
    HttpParams httpParameters;


   HttpClient client;
    HttpResponse response;
    String userAuth;

    httpParameters = new BasicHttpParams();
                    String auth = android.util.Base64.encodeToString(
                            (username + ":" + userpwd).getBytes("UTF-8"), 
                            android.util.Base64.NO_WRAP
                        );
                        HttpGet request = new HttpGet(StaticURL.uMain+resourceURI);

                        request.addHeader("Authorization", "Basic "+ auth);

                    HttpConnectionParams.setSoTimeout(httpParameters, timeoutConnection);
                    client = new DefaultHttpClient(httpParameters);

                    response = client.execute(request);
                    userAuth = EntityUtils.toString(response.getEntity());

                    System.out.println("Data. in login.."+userAuth);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-08
    • 2013-07-18
    • 2015-02-15
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    相关资源
    最近更新 更多