从 Android 设备发送 HTTPS/HTTP POST 时出现 UnknownHostException

2024-01-13

我正在尝试创建一个到 Google 服务器的 HTTP POST 来获取 ClientLogin Auth(如所述here http://code.google.com/android/c2dm/index.html#push)。这篇文章的源代码并不是一个真正的谜,我找到了它here http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html#c2dm_sendmessage。 (我确信我的帖子有效,因为使用 CURL 我获得了身份验证)

该方法非常简单,我已经相应地修改了值,但是,当我执行以下行时,出现以下异常:

HttpResponse response = client.execute(post);

06-17 13:44:05.645: WARN/System.err(768): java.net.UnknownHostException: www.google.com
06-17 13:44:05.645: WARN/System.err(768):     at java.net.InetAddress.lookupHostByName(InetAddress.java:506)
06-17 13:44:05.645: WARN/System.err(768):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:294)
06-17 13:44:05.645: WARN/System.err(768):     at java.net.InetAddress.getAllByName(InetAddress.java:256)
06-17 13:44:05.645: WARN/System.err(768):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136)
06-17 13:44:05.645: WARN/System.err(768):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
06-17 13:44:05.645: WARN/System.err(768):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
06-17 13:44:05.645: WARN/System.err(768):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359)
06-17 13:44:05.645: WARN/System.err(768):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
06-17 13:44:05.645: WARN/System.err(768):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
06-17 13:44:05.645: WARN/System.err(768):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
etc.
etc.
etc…

(省略无关日志)。

在尝试了各种代码组合(在 google 和此处找到)、不同的 URL(带或不带 HTTPS)、常规 HTTP 等之后。我决定尝试以下操作:

try {
       InetAddress address = InetAddress.getByName("http://www.google.com");
} catch (UnknownHostException e) {
    e.printStackTrace();
}

我得到同样的错误:(也修剪了不相关的部分)

06-17 13:53:07.445: WARN/System.err(820): java.net.UnknownHostException: http://www.google.com
06-17 13:53:07.449: WARN/System.err(820):     at java.net.InetAddress.lookupHostByName(InetAddress.java:506)
06-17 13:53:07.449: WARN/System.err(820):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:294)
06-17 13:53:07.449: WARN/System.err(820):     at java.net.InetAddress.getByName(InetAddress.java:325)

现在我确定重新启动了 Eclipse、The Phone,我什至忘记了 Wi-Fi 并重新创建了它。我在手机上使用静态 IP 地址和 Google DNS 或 OpenDNS(我已经交换了它们来尝试)。手机上的互联网可以使用,其他应用程序也可以使用。

I do have

<uses-permission android:name="android.permission.INTERNET" /> 

在我的清单上的正确位置(应用程序内部),事实上我也有“android.permission.ACCESS_FINE_LOCATION”,但这不会改变任何东西。

Device

这是一款全新的 Nexus-S(已解锁),运行 Android 2.3.4。

失败的代码

这是有问题的方法:(参见行 HttpResponse response = client.execute(post);)

Please note that I've removed the "real values" but rest assured the correct values are in the original code.

public void getAuthentification(View view) {
    SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(this);

    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(
            "https://www.google.com/accounts/ClientLogin");

    try {

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
        nameValuePairs.add(new BasicNameValuePair("Email", prefs.getString(
                "user", "undefined")));
        nameValuePairs.add(new BasicNameValuePair("Passwd", prefs
                .getString("password", "undefined")));
        nameValuePairs.add(new BasicNameValuePair("accountType", "GOOGLE"));
        nameValuePairs.add(new BasicNameValuePair("source",
                "Google-cURL-Example"));
        nameValuePairs.add(new BasicNameValuePair("service", "ac2dm"));

        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = client.execute(post);
        BufferedReader rd = new BufferedReader(new InputStreamReader(
                response.getEntity().getContent()));

        String line = "";
        while ((line = rd.readLine()) != null) {
            Log.e("HttpResponse", line);
            if (line.startsWith("Auth=")) {
                Editor edit = prefManager.edit();
                edit.putString(AUTH, line.substring(5));
                edit.commit();
                String s = prefManager.getString(AUTH, "n/a");
                Toast.makeText(this, s, Toast.LENGTH_LONG).show();
            }

        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

我缺少什么?


好的,看完后这个答案 https://stackoverflow.com/questions/3314137/android-unknownhostexception/3367391#3367391与我在其他谷歌结果中读到的相反,......

<uses-permission android:name="android.permission.INTERNET" /> 

…必须是在应用程序之外.

我有:

       <!-- General Permissions -->
       <uses-permission android:name="android.permission.INTERNET" />
    </manifest>

现在可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Android 设备发送 HTTPS/HTTP POST 时出现 UnknownHostException 的相关文章

  • Inno 安装脚本中的 HTTP POST 请求

    我想通过 POST 将 Inno 安装过程中从用户收集的一些信息提交到我们的服务器 明显的解决方案是包含一个 exe 文件 安装程序会将其提取到临时位置并使用参数启动 但是 我想知道 有没有更简单 更好的方法 基于 jsobo 使用建议Wi
  • Android 中的列表视图到 pdf

    我有一个自定义列表视图 我想从整个列表视图制作pdf 我参考了很多帖子并实现了下面的代码 该代码将我的列表视图转pdf 但问题是它不包含整个列表视图项目 pdf 中仅提供前几项 我的转换函数列表视图转pdf is fab setOnClic
  • android studio更新到3.0后任务执行失败

    当我更新 Android Studio 3 0 时 出现错误 unable to merge with dex 然后我添加了mutiDexEnabled true并且还添加了com android support multidex 1 0
  • 垂直翻转 Android Canvas

    有没有一种简单的方法可以在 Android 中翻转画布 我似乎找不到任何可以让我垂直翻转它的东西 这样 y 轴上的零就是手机屏幕的底部而不是顶部 如果解决方案不是特别快也没关系 因为我没有对画布进行任何计算密集的操作 提前致谢 Try ca
  • 通过覆盖滑动调整图像大小不会调整图像大小

    我在用着Glide下载并显示图像 但是 当我尝试调整图像大小时 它不会这样做 我得到随机大小 或者可能是图像的实际大小 这是我用于通过 Glide 加载的代码 Glide with context load file getUrl asBi
  • Android TabLayout:均匀分布

    我正在查看 Google IO 中使用的 Google 类 称为 SlidingTabLayout 在该类中 有一个名为 setDistributeEvenly 的方法 它允许所有这些选项卡在屏幕上均匀分布 每个选项卡具有相同的大小 中心对
  • toArray 与预先确定大小的数组

    使用时ar toArray new String ar size 安卓工作室3 2 1警告预先确定大小的数组并建议空数组 有两种方式将集合转换为数组 使用 预先确定大小的数组 如 c toArray new String c size 或使
  • Eclipse Android 模拟器 - 键盘不工作

    我刚刚更新到最新的 SDK 版本 16 使用最新版本的 API 16 创建了新版本的 AVD 并且我的硬件键盘在模拟器上不再工作 甚至我的其他 avd 使用旧版本的 sdk 任何想法如何解决这一问题 您的 AVD 的 键盘支持 硬件属性是否
  • 为什么 Android 上的免安装应用有两种设置?

    我使用的是运行 Android 11 的 Pixel 3 我发现有 2 种不同的设置可以控制免安装应用的某些方面 设置 应用程序和通知 默认应用程序 打开链接 即时应用程序 即使未安装 也打开应用程序中的链接 切换默认为开 Google P
  • 如何从Android webview下载文件?

    我下面的代码可以很好地加载 url 页面 并且在搜索歌曲后 当我单击下载链接时 它崩溃了 关于如何让下载管理器与网络视图一起工作的教程并不多 我究竟做错了什么 import java io File import android app A
  • CXF 增加连接池大小而不更改 http.maxConnections

    最近我被要求将 CXF 配置为与我们旧的 XFire 服务相同的参数 这些参数之一是Keep Alive timeout 60 max 20 然而 我做了一些研究 看来 CXF 使用 JVMHttpURLConnection引擎盖下的对象
  • Android RxJava 2 JUnit 测试 - android.os.Looper 中的 getMainLooper 未模拟 RuntimeException

    我在尝试为正在使用的演示者运行 JUnit 测试时遇到 RuntimeExceptionobserveOn AndroidSchedulers mainThread 由于它们是纯 JUnit 测试而不是 Android 仪器测试 因此它们无
  • 如何在没有 OpenCv Manager 的情况下运行 OpenCV 代码

    我正在使用 OpenCV4Android 版本 2 4 10 并在 Samsung Galayx GT I9300 上测试我的代码 我遇到的问题是 我必须从 Play 商店下载 Opencv Manager 以便我的 opencv 代码运行
  • 如何在 Android 中不使用 Intent 裁剪图像

    我正在尝试裁剪图像我使用了下面的代码 意图 i new Intent Intent ACTION PICK android provider MediaStore Images Media EXTERNAL CONTENT URI i pu
  • Android 布局仅使一个视图将自己绘制为横向,但其他所有视图都使用纵向

    我的活动布局中的主要视图元素是 VideoView 我的视频被渲染为设备的横向分辨率 但视频中的所有内容都是横向的 因此仍然需要在设备处于纵向位置时观看 即使我必须将活动设置为android screenOrientation landsc
  • 如何在不下载子项的情况下从 Firebase 获取子项密钥?

    我有一个 Firebase 数据库 其中的节点 items 有很多子项 我想导入子项键的列表 由于每个子项都包含相当多我对此不感兴趣的数据 因此我想仅下载子项密钥 以最大程度地减少传输的数据量 为了便于说明 假设我有以下数据结构 然后我想获
  • Android:在surfaceview上实现admob

    我有一个使用 SurfaceView 的小游戏形式的活动 下面是代码片段 我很困惑如何在 SurfaceView 上实现 admob 请建议 public class DroidzActivity extends Activity priv
  • 找不到与给定名称“@style/Theme.AppCompat.Light”匹配的资源

    我已经研究这个问题几个小时了 从 github 下载存储库后 任何 xml 文件中的唯一错误是 No resource found that matches the given name style Theme AppCompat Ligh
  • 在android中测量不规则多边形的面积

    我正在开发一个应用程序 在其中我在地图上绘制多边形 并且我使用的地图不是谷歌 它的Mapsforge开源离线地图库 我可以通过将地理点转换为像素点来轻松在地图上绘制多边形 但在这里我想发现是不规则的多边形 为此我做了很多尝试 但它让我失败了
  • 带有包含布局的导航抽屉布局

    我认为我的问题实际上很简单 但我不知道如何解决 有一个工作导航抽屉 代码如下

随机推荐

  • 沿 X 方向标记

    我从未使用过 Google 地图 API 对于我正在从事的学校项目 我需要在两个位置之间找到方向 这是简单的部分 我想我可以做到这一点 然而我还需要打一个X标记 沿途每 10 英里 这可能吗 谢谢 好的 这里有一个可行的解决方案 每 200
  • 将元素颜色重置为默认样式表颜色(jQuery、JavaScript)

    我需要能够在输入字段可能通过 javascript 更改为不同的值后将其重置回其原始颜色 问题是我不想对值进行硬编码 以防样式表发生变化 我想使用页面上使用的默认颜色 像这样重置颜色很好吗 或者有更好的方法吗 theinput css co
  • 比这更通用的 parfoldr

    我的目标是拥有并行的foldr 功能 起初 似乎 实现起来相当简单 这就是我的想法 首先根据输入列表的数量将输入列表分成多个分区 核心 numCapabilities 然后将foldr应用到每个分区 其中 将产生每个分区的折叠值列表 然后做
  • 使用 bash 仅提取传入电子邮件的正文部分

    I use offlineimap将邮件提取到 Maildir 文件夹中 我想自动解析 Maildir 文件夹中的所有新传入电子邮件 并仅将 发件人 主题 和 正文 作为即时消息发送到其他地方 所以我尝试处理所有邮件 MPATH Mail
  • Python SMTP 错误 10060

    有人可以给我一些关于为什么会出现这种情况的见解吗 mailServer smtplib SMTP smtp gmail com 587 和这个 mailServer smtplib SMTP smtp gmail com 587 正在说这样
  • 如何在 Team City 中运行所有 NUnit 测试?

    我们每次提交时都使用 TeamCity 6 0 构建 VS C 解决方案 构建完成后 另一个测试 TC 项目就会运行 为了让开发人员可以添加 删除 编辑 VS 单元测试项目 如何让 TeamCity 使用 sln 文件或搜索测试 dll 我
  • R中的模糊外连接/合并

    我有 2 个数据集 想要进行模糊连接 这是两个数据集 library data table data1 dt1 lt fread NAME State type ABERCOMBIE TOWNSHIP ND TS ABERDEEN TOWN
  • MacOS 终端:如何使用第二个 ssh 密钥?

    我正在 MacOS 上工作 想要使用第二个 ssh 密钥进行 SSH Git 登录 我在 ssh 中有两个密钥对 id rsa id rsa pub id rsa gitlab id rsa gitlab pub id rsa 和 id r
  • 如何获取 SLURM 数组作业中失败和已完成作业的计数

    我正在使用 slurm 运行多个数组作业 对于给定的数组作业 ID 假设为 885881 我想列出失败作业和已完成作业的计数 像这样的事情 Input
  • async 是否会使其中的所有内容异步?

    据 MDN 报道 async 函数声明定义了一个异步函数 我理解它是因为该函数将被视为异步进程 就像setTimeout或一些数据库请求 例如 在下面的示例中 进程应在数字之间的某个位置输出 main let func2 async gt
  • FiPy 中的固定通量边界条件

    我对此主题有一个后续问题FyPi 中的耦合非线性方程 https stackoverflow com questions 62640821 coupled non linear equations in fypi 当对所有变量使用诺依曼边界
  • 带镀铬的背景中心(错误)

    我有一张居中的背景图像 Chrome 显示偏移一个像素 CSS container background url images header jpg no repeat scroll 50 transparent width 100 hea
  • EF CORE 中的 DbFunctions.TruncateTime LINQ 等效项

    我的 net 应用程序中有以下功能正常的 LINQ public ActionResult Index Dictionary
  • 如何在 SQL Server 中创建参数化 XPath 查询?

    我正在尝试在 SQL Server 中编写一个参数化查询 该查询使用参数值作为 XPath 的一部分 但它似乎没有按照我期望的方式工作 这是我的样本 create table example xmltest xml declare Lang
  • 如何添加本地项目(不是 jar)作为 Maven 项目的依赖项

    我有两个 Maven 项目 我已将它们作为两个模块添加到一个 Intellij Idea 的项目中 项目 B 依赖于项目 A 以下是其 pom xml 文件的简化版本 项目A
  • Android 相机 - 预览尺寸、图片尺寸、裁剪和扭曲

    我的应用程序需要以纵向模式捕获一些给定尺寸 比如说宽x高 的图片 一般情况下 相机不支持我想要的尺寸 宽x高 因此我需要裁剪拍摄的图片以符合我的规格 这个看似简单的程序让我对预览和图片尺寸和格式之间 良好 对应的问题感到疯狂 让我解释 我需
  • android.database.sqlite.SQLiteException:无法将 Android 短信数据库的数据库从版本 58 降级到 55

    当我的 Android 应用程序尝试读取 Android 短信数据库时 我遇到此崩溃 读取android短信数据库的代码类似于以下代码片段 String SMS URI content sms Uri uri Uri parse SMS U
  • 如何在 Windows 上用 C/C++ 为文件预分配空间?

    我正在向使用纯 C 函数的现有代码库添加一些功能 fopen fwrite fclose 将数据写入文件 不幸的是 我无法更改文件 i o 的实际机制 但我必须为文件预先分配空间以避免碎片 这会影响读取期间的性能 有没有比实际将零或随机数据
  • WebRTC 视频不显示

    我正在创建一对一的 webrtc 视频聊天室 但此代码不起作用 我想知道为什么 function hasUserMedia navigator getUserMedia navigator getUserMedia navigator we
  • 从 Android 设备发送 HTTPS/HTTP POST 时出现 UnknownHostException

    我正在尝试创建一个到 Google 服务器的 HTTP POST 来获取 ClientLogin Auth 如所述here http code google com android c2dm index html push 这篇文章的源代码