天道酬勤,学无止境

如何从给定的电子邮件构建 GRAVATAR 图像的 url(How to build a url of a GRAVATAR image from a given email)

问题

有一个简单的方法php ,一个简单的脚本或 URL 操作来为与电子邮件对应的gravatar图像构建一个 URL?

Ex. http://gravatar.com/avatars/avatar.php?email=myemail@myserver.com Ex. http://gravatar.com/avatars/avatar.php?email=myemail@myserver.com这将返回一个 jpeg 或 png 图像。

如果没有像示例那样的简单方法,那么您知道解析电子邮件对应的 gravatar 的 url 的最简单方法是什么? 谢谢

回答1

您可以在其实现站点上找到带有 PHP 代码的示例脚本:http://en.gravatar.com/site/implement/php

回答2

用这个:

$userMail = whatever_to_get_the_email;

$imageWidth = '150'; //The image size

$imgUrl = 'http://www.gravatar.com/avatar/'.md5($userMail).'fs='.$imageWidth;
回答3

根脚本位于 http://www.gravatar.com/avatar/ URL 的下一部分是所请求用户的小写电子邮件地址的十六进制 MD5 哈希值,所有空格都被剪掉了。 您可以添加适当的文件扩展名,但它是可选的。

完整的 API 在这里 http://en.gravatar.com/site/implement/

回答4

尽管@dipi-evil 的解决方案工作正常,但我并没有用它获得更大的图像。 这是我如何让它正常工作。

$userMail = 'johndoe@example';

$imageWidth = '600'; //The image size

$imgUrl = 'https://secure.gravatar.com/avatar/'.md5($userMail).'?size='.$imageWidth;
回答5

您可以看到 Gravatar 的这个简单功能,它可以:

  1. 检查电子邮件是否有任何重力。
  2. 返回该电子邮件的头像。

     <?php class GravatarHelper { /** * validate_gravatar * * Check if the email has any gravatar image or not * * @param string $email Email of the User * @return boolean true, if there is an image. false otherwise */ public static function validate_gravatar($email) { $hash = md5($email); $uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404'; $headers = @get_headers($uri); if (!preg_match("|200|", $headers[0])) { $has_valid_avatar = FALSE; } else { $has_valid_avatar = TRUE; } return $has_valid_avatar; } /** * gravatar_image * * Get the Gravatar Image From An Email address * * @param string $email User Email * @param integer $size size of image * @param string $d type of image if not gravatar image * @return string gravatar image URL */ public static function gravatar_image($email, $size=0, $d="") { $hash = md5($email); $image_url = 'http://www.gravatar.com/avatar/' . $hash. '?s='.$size.'&d='.$d; return $image_url; } }

你可以像这样使用:

if (GravatarHelper::validate_gravatar($email)) {
   echo GravatarHelper::gravatar_image($email, 200, "identicon");
}
回答6

您可以使用此代码获取在 Gravatar.com 上设置的电子邮件头像,或者如果未找到该电子邮件的头像,则生成默认头像。

您只需要将电子邮件作为参数传递并在项目中的任何位置调用此函数。

public function  get_avatar($email){

    $url = 'https://www.gravatar.com/avatar/'; // The gravatar's API url
    $url .= md5( strtolower( trim( $email ) ) ); // Hash the user's email
    $url .='.png?s=300'; // Get a custom image size

        //Extract the image if is set on Gravatar

    if ( isset($img) ) {
        foreach ( isset($atts) as $key => $val )
            $url .= ' ' . $key . '="' . $val . '"';
    }

    return $url; // Return the avatar's url or the default avatar if no image found.

}
标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何在 Wordpress 帖子循环中获取发布作者用户 BuddyPress 头像的 URL(How To Get URL To Post Author's User BuddyPress Avatar Inside Wordpress Post Loop)
    问题 问题 如何仅获取帖子作者头像的 URL? 要求 我想要在我的网站上托管的图像的 url。 图像将在帖子的循环中调用。 该帖子的作者是我希望显示其头像的人。 我试过的 一堆东​​西,但主要是<?php echo get_avatar_url('user_email'); ?> <?php echo get_avatar_url('user_email'); ?> 它返回一个指向 Gravatar 托管的默认“神秘人”图像的 URL,尽管他们是为这个测试用户上传到我网站的头像。 澄清 我不想要 Gravatar 托管的图像。 参考 get_avatar_url() 的 Wordpress 代码参考 目前没有完整的 Wordpress Codex 条目 顾虑 我开始考虑 avatar 和 Gravatar 之间的所有 WP 歧义,get_avatar_url 仅适用于 Gravatar 图像,这些图像当然只对 Gravatar 注册用户可用。 希望有人能告诉我我错了。 可能感兴趣 网站使用 Buddypress 此网站 Buddypress 安装使用自定义头像大小本网站使用自己的自定义主题用户已将头像上传到网站用户没有 gravatar 帐户(没有进行测试,因为大多数用户不会拥有 gravatar 帐户。我不希望大多数用户用神秘人代替他们的头像)
  • 使WPF图像加载异步(Make WPF Image load async)
    问题 我想加载Gravatar-Images并将它们从代码后面设置为WPF Image-Control。 所以代码看起来像 imgGravatar.Source = GetGravatarImage(email); GetGravatarImage如下所示: BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.UriSource = new Uri( GravatarImage.GetURL( "http://www.gravatar.com/avatar.php?gravatar_id=" + email) , UriKind.Absolute ); bi.EndInit(); return bi; 不幸的是,这在网络连接缓慢时会锁定GUI。 有没有一种方法可以分配图像源并使它在后台加载图像而不阻塞UI? 谢谢! 回答1 我建议您在XAML的imgGravatar上使用Binding。 在其上设置IsAsync = true ,WPF将自动利用线程池中的线程提取图像。 您可以将解析逻辑封装到IValueConverter中,然后只需将电子邮件绑定为Source 在XAML中: <Window.Resouces> <local:ImgConverter x:Key="imgConverter" /> </Window
  • Gravatar:我怎么知道用户是否有真实图片(Gravatar: How do I know if a user has a real picture)
    问题 我已经在我的网站上使用了 Gravatar 服务。 但我想知道用户是否上传了他们的图片。 有没有办法知道这一点? 回答1 构造URL时,使用参数d=404。 如果用户没有设置图片,这将导致 Gravatar 返回 404 错误而不是图像。 如果您使用从 gravitar 站点链接到的 .Net 控件,则需要修改 IconSet 枚举(并且可能将代码从控件中拉出,以便您可以直接获得状态)。 回答2 我做了什么: 使用不存在的电子邮件地址生成头像保存图像对图像内容进行 MD5 校验,并将其作为常量存储在您的应用程序代码中 之后,我对每个 Gravatar 请求都这样做: 下载头像 MD5 校验和内容并将其与常量进行比较如果匹配,则为默认图像,如果不匹配,则为自定义图像 我还将 gravatar 图像缓存了 24 小时,因此您不必一直依赖 gravatar。 或者,您可以将前 3 个点放在一个函数中,让它不时运行一次,以确保 Gravatar 仍然使用相同的默认图像,尽管它们至少在最近几个月没有使用(可能永远不会)。 回答3 在 PHP 中: function hasGravatar($email) { return (md5(file_get_contents(sprintf('http://www.gravatar.com/avatar/%s?default=identicon
  • 如何在 Stack Overflow 上生成随机默认的“gravatars”?(How to generate the random default “gravatars” like on Stack Overflow?)
    问题 Stack Overflow 如何为未上传图片或未创建 Gravatar 图标的用户自动生成头像? 这些随机头像来自哪里,我如何为我自己的网站生成它们? 回答1 显示“随机”彩色 Gravatar 是因为此查询字符串参数被添加到每个d=identicon源 URL: d=identicon 这样做是为了如果用户没有与其电子邮件关联的 gravatar 图像,则会显示此“随机”图像,而不是默认的蓝色 gravatar 图像。 以下显示“默认”蓝色图像,因为不包含该参数: 然而,包含d=identicon参数的相同 URL 显示了这一点: 这是用于示例的 URL: https://www.gravatar.com/avatar/94d093eda664addd6e450d7e9881bcad?s=32&d=identicon&r=PG : https://www.gravatar.com/avatar/94d093eda664addd6e450d7e9881bcad?s=32&d=identicon&r=PG 顺便说一下,这些图像(称为 Identicons)并不是真正随机的,而是基于电子邮件哈希生成的。 请参阅默认用户头像是如何生成的? 对于该算法的一些语言实现。
  • Go中的gRPC简介
    给使用 Go 语言的初学者的 gRPC 概述 文章目录 RPC它是怎么工作的? 用例Protocol Buffers安装 gRPC实现 总结架构向后兼容性架构演变验证语言互操作性 RPC RPC 是用于 软件应用之间点对点通信 的 网络编程模型 或是 进程间通信技术。 RPC 是一种 协议,一个程序能够使用该协议,对位于另外一台计算机中的程序请求服务,而无需了解网络的详细信息。 RPC 代表 “远程过程调用”,它是一种 客户端 - 服务器交互 的形式 - 调用者是客户端,执行者是服务器 - 通常通过 " 请求 - 响应消息传递系统 " 实现。 客户端运行时程序,知道如何去寻址远程服务器应用程序,以及通过网络发送请求远程过程的消息。类似的,服务器包括与远程过程本身的运行时程序和存根。 它是怎么工作的? RPC 工作的方式是,发送方或者客户端以过程、函数或者方法调用的形式创建对 RPC 进行转换和发送的远程服务器的请求。当远程服务器接收到请求时,它会将响应发送回客户端,然后应用程序继续其进程。 RPC 工作的方式是,发送方或者客户端以过程、函数或者方法调用的形式创建对 RPC 进行转换和发送的远程服务器的请求。当远程服务器接收到请求时,它会将响应发送回客户端,然后应用程序继续其进程。 用例 我们将实现一个 Gravatar 服务,用以 生成 URLs,其包含相关邮件地址的 MD5 哈希
  • 显示自定义默认头像而不是gravatar(Show custom default avatar instead of gravatar)
    问题 我正在使用这个自定义函数从我的服务器而不是 gravatar 获取默认头像: if(!function_exists('custom_avatar')){ function custom_avatar($avatar_defaults){ $new_default_icon = 'http://localhost/gv/wp-content/images/mystery-man.png'; $avatar_defaults[$new_default_icon] = 'Custom Avatar'; return $avatar_defaults; } add_filter('avatar_defaults','custom_avatar'); } 但是自定义头像没有出现,当我查看源代码时,图像的src看起来像这样: http://0.gravatar.com/avatar/a432e8915b383edd8d25c2a4fd5a6995?s=32&d=http%3A%2F%2Flocalhost%2Fgv%2Fwp-content%2Fimages%2Fmystery-man.png%3Fs%3D32&r=G&forcedefault=1 为什么我的图像 src 相对于 Gravatar 在这里? 我该如何解决这个问题? 回答1 从文档: 当您包含默认图像时
  • 我如何在 Laravel 中实现 Gravatar?(How do I implement Gravatar in Laravel?)
    问题 在 Laravel 中实现 Gravatar URL 的最快方法是什么? 我有一个必填的电子邮件地址字段,但我不想为 Gravatars 创建一个新列,我更喜欢使用本机Auth::user()属性。 回答1 事实证明,您可以使用 Laravel mutator 创建模型中不存在的属性。 假设您有一个User模型,在相应的users表中有一个必填的email列,只需将其粘贴到您的User模型中: public function getGravatarAttribute() { $hash = md5(strtolower(trim($this->attributes['email']))); return "http://www.gravatar.com/avatar/$hash"; } 现在当你这样做时: Auth::user()->gravatar 您将获得您期望的 gravatar.com URL。 无需创建 Gravatar 列、变量、方法或其他任何内容。 回答2 稍微扩展沃根的回答...... 另一个使用 Trait 的例子: namespace App\Traits; trait HasGravatar { /** * The attribute name containing the email address. * * @var string */ public
  • 从电子邮件或姓名获取 GitHub 头像(Get GitHub avatar from email or name)
    问题 我正在尝试从 GitHub 用户那里获取 GitHub 用户图片(头像)。 我找到了这些 API: https://avatars.githubusercontent.com/<username> https://avatars.githubusercontent.com/u/<userid> 但是我找不到从用户电子邮件或用户显示名称中获取头像的方法。 我找不到有关此的文档。 是否有一些类似的 URL API 来获取我正在寻找的内容? 回答1 您可以将.png附加到用户个人资料的 URL 以重定向到他们的头像。 您可以添加查询参数size以指定小于默认值 460px 宽的大小(即不允许大于 460)。 例子: https://github.com/twbs.png https://github.com/npm.png?size=200 https://github.com/github.png?size=40 回答2 https://developer.github.com/v3/users/#get-a-single-user 使用 /users/:user 端点。 应该在返回的 json 中的avatar_url下。 例如,我的 avatar_url 可以通过点击这个 url 找到。 编辑 我能想到的另一种方式是迂回。 由于 GitHub 使用 Gravatar
  • 如何在PHP中创建.webp图像(How to create a .webp image in PHP [closed])
    问题 关门了。 这个问题需要更加集中。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使其仅通过编辑此帖子即可将重点放在一个问题上。 1年前关闭。 改善这个问题 如何使用PHP创建.webp图像? 可以使用WebP支持来编译PHP(> = 5.5.0)的现代版本,但是从我的了解中,这在许多Web主机上并不常见。 如果使用WebP支持进行编译,则可以使用内置的imagewebp()函数来创建.webp图像。 使用PHP创建.webp图像的替代方法是什么? 库,API的其他方法? 回答1 当前可用的选项包括:gd(扩展名),imagick(扩展名),imagick(执行调用),gmagick(扩展名),gmagick(执行调用),cwebp(执行调用),gmagick(执行调用)或调用a云服务。 我在github上创建了一个库'webp-convert',它尝试了所有方法。 自述文件描述了每种方法的优缺点。 它可以在这里找到:https://github.com/rosell-dk/webp-convert。 由于我不知道的原因,imagick / gmagick扩展产生的质量没有比原始文件更好。 这只是扩展的问题,而不是exec调用。 回答2 webp图像创建过程: 您可以使用以下php命令来获取webp图像 $imgName = "codingslover.jpg";
  • 如何在本地运行travis-ci(How to run travis-ci locally)
    问题 我刚刚加入一个项目,对travis-ci还是陌生的。 我宁可不必将.travis.yml每一个小改动和我对源代码所做的每一个小改动都推送到运行构建中。 使用jenkins,您可以下载jenkins并在本地运行。 特拉维斯会提供这样的服务吗? 注意:我已经看过travis-ci cli并下载了它,但是似乎要做的就是调用他们的API,然后将其连接到我的GitHub存储库,因此,如果我不进行推送,那么重新启动就没关系最后一个版本。 回答1 此过程使您可以在计算机上完全复制任何Travis构建作业。 另外,您可以随时中断该过程并进行调试。 以下是我在php-school / cli-menu上完美再现作业#191.1的结果的示例。 先决条件 您在GitHub上有公共仓库您在Travis上至少运行了一个版本您已经在计算机上设置了Docker 设置构建环境 参考:https://docs.travis-ci.com/user/common-build-problems/ 组成您自己的临时内部版本ID BUILDID="build-$RANDOM" 查看构建日志,打开显示更多信息以获取WORKER INFORMATION的信息并找到INSTANCE行,将其粘贴到此处并运行(将冒号后的标记替换为最新的可用标记): INSTANCE="travisci/ci-garnet:packer
  • 如何确定JavaFX应用程序所需的FXML文件,CSS文件,图像和其他资源的正确路径?(How do I determine the correct path for FXML files, CSS files, Images, and other resources needed by my JavaFX Application?)
    问题 我的JavaFX应用程序需要能够找到FXML文件以使用FXMLLoader加载它们,以及样式表(CSS文件)和图像。 当我尝试加载这些项目时,经常会出错,或者我尝试加载的项目根本无法在运行时加载。 对于FXML文件,我看到的错误消息包括 Caused by: java.lang.NullPointerException: location is not set 对于图像,堆栈跟踪包括 Caused by: java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found 如何找出这些资源的正确资源路径? 回答1 简短版答案: 使用getClass().getResource(...)或SomeOtherClass.class.getResource(...)创建资源的URL 将绝对路径(以/ getResource(...) )或相对路径(不以/ getResource(...) )传递给getResource(...)方法。 路径是包含资源的包,带有. 替换为/ 。 不要在资源路径中使用.. 如果并且当应用程序捆绑为jar文件时,这将无法工作。 如果资源不在类的同一包或子包中,请使用绝对路径。 对于FXML文件,将URL直接传递给FXMLLoader 。 对于图像和样式表
  • 如何将base64编码的图像保存到磁盘?(How can I save a base64-encoded image to disk?)
    问题 我的Express应用程序正在从浏览器(使用toDataURL()从canvas生成)中接收base64编码的PNG,并将其写入文件。 但是该文件不是有效的图像文件,因此“文件”实用程序只是将其标识为“数据”。 var body = req.rawBody, base64Data = body.replace(/^data:image\/png;base64,/,""), binaryData = new Buffer(base64Data, 'base64').toString('binary'); require("fs").writeFile("out.png", binaryData, "binary", function(err) { console.log(err); // writes out file without error, but it's not a valid image }); 回答1 我认为您正在转换的数据比您需要的更多。 一旦使用正确的编码创建了缓冲区,您只需要将缓冲区写入文件即可。 var base64Data = req.rawBody.replace(/^data:image\/png;base64,/, ""); require("fs").writeFile("out.png", base64Data, 'base64'
  • 如何在 jQuery 中创建散列电子邮件?(How to create a hashed email in jQuery?)
    问题 我需要在 jQuery 中散列一封电子邮件,以便与 Gravatar 一起使用。 所以: http://www.gravatar.com/avatar/user@email.com 会变成: http://www.gravatar.com/avatar/205e460b479e2e5b48aec07710c08d50 我能够从 Python/Mako 获取电子邮件并将其传递到我的 jQuery 类中。 var gravatar_placeholder = $('#modal-vcard .vcard_profile_pic img').prop('src'); var substr = gravatar_placeholder.split('__gravatar__').join(their_email); 用户的电子邮件是their_email ,我需要在上面的第 2 行之前在 jquery/javascript 中散列,这样它就会生成 Gravatar。 我在这里找到了这个答案,但无法让它在我的情况下工作。 有小费吗? 你会如何处理这个问题? 回答1 有几种散列算法,我不确定您要使用哪一种,但 MD5 是一种非常流行的散列算法。 例如, someemail@test.com散列在MD5是9cb0cbcda88377b1e1d66e8d7f01cbae 。 https:/
  • Vue.js img src 连接变量和文本(Vue.js img src concatenate variable and text)
    问题 我想将 Vue.js 变量与图像 URL 连接起来。 我计算的: imgPreUrl : function() { if (androidBuild) return "android_asset/www/"; else return ""; } 如果我为 android 构建: <img src="/android_asset/www/img/logo.png"> 别的 <img src="img/logo.png"> 如何将计算变量与 URL 连接? 我尝试过这个: <img src="{{imgPreUrl}}img/logo.png"> 回答1 您不能在属性中使用卷曲(小胡子标签)。 使用以下命令连接数据: <img v-bind:src="imgPreUrl + 'img/logo.png'"> 或简短版本: <img :src="imgPreUrl + 'img/logo.png'"> 在 Vue 文档中阅读更多关于动态属性的信息。 回答2 在另一种情况下,我可以使用带有反引号的模板文字 ES6,因此您可以将其设置为: <img v-bind:src="`${imgPreUrl()}img/logo.png`"> 回答3 你试一试 <img :src="require(`${imgPreUrl}img/logo.png`)"> 回答4 如果您从数据库中处理此问题
  • 将 url 中的图像加载到 PictureBox 中(Load an image from a url into a PictureBox)
    问题 我想将图像加载到PictureBox 。 这是我要加载的图像:http://www.gravatar.com/avatar/6810d91caff032b202c50701dd3af745?d=identicon&r=PG 我该怎么做呢? 回答1 PictureBox.Load(string url) 方法“将 ImageLocation 设置为指定的 URL 并显示指示的图像”。 回答2 试试这个: var request = WebRequest.Create("http://www.gravatar.com/avatar/6810d91caff032b202c50701dd3af745?d=identicon&r=PG"); using (var response = request.GetResponse()) using (var stream = response.GetResponseStream()) { pictureBox1.Image = Bitmap.FromStream(stream); } 回答3 yourPictureBox.ImageLocation = "http://www.gravatar.com/avatar/6810d91caff032b202c50701dd3af745?d=identicon&r=PG" 回答4
  • Instagram,如何通过标签获取所有照片?(Instagram, How to get All photos by Tag?)
    问题 所以我可以得到多少帖子有“SOMETAG”: https://api.instagram.com/v1/tags/SOMETAG 我可以通过标签获取图像: https://api.instagram.com/v1/tags/SOMETAG/media/recent 但它只返回我的用户照片。 如何从所有用户处获取带有某个标签的所有照片(不是一个请求)? 回答1 您的客户端处于沙盒模式,只能搜索受邀用户发布的照片​​标签。 您必须登录 https://www.instagram.com/developer,编辑您的客户端并点击“GO LIVE”按钮。 如果“上线”按钮被禁用,则您的应用程序已先由 Instagram 审核:单击“权限”选项卡并提交以供审核。 (需要公司名称、联系电子邮件和隐私政策 URL 才能开始提交。)一旦获得批准,您就可以点击上线。 回答2 我认为您处于沙箱模式,因此它只会返回您的沙箱授权用户的媒体,这是有关此的信息: 作为另一个例子,让我们考虑一个返回媒体列表的端点:/tags/{tag-name}/media/recent。 正如预期的那样,此端点返回的响应将仅包含具有给定标签的媒体。 但它不会返回来自任何公共 Instagram 用户的媒体,它只会返回属于您的沙箱用户的媒体,限制为每个用户的最后 20 个。 以下是有关沙盒模式的更多详细信息的链接
  • Docker 如何在不将文件提交到图像的情况下添加文件?(Docker how to ADD a file without committing it to an image?)
    问题 我有一个 ~300Mb 的压缩本地文件,我将其添加到 docker 映像中。 然后下一个状态提取图像。 问题是 ADD 语句导致提交,导致新的文件系统层使图像比它需要的大 ~300Mb。 ADD /files/apache-stratos.zip /opt/apache-stratos.zip RUN unzip -q apache-stratos.zip && \ rm apache-stratos.zip && \ mv apache-stratos-* apache-stratos 问题:是否有解决方法可以在不导致提交的情况下添加本地文件? 一种选择是在开始 docker 构建之前运行一个简单的 Web 服务器(例如python -m SimpleHTTPServer ),然后使用wget检索文件,但这似乎有点混乱: RUN wget http://localhost:8000/apache-stratos.zip && \ unzip -q apache-stratos.zip && \ rm apache-stratos.zip && \ mv apache-stratos-* apache-stratos 另一种选择是在容器启动时而不是构建时提取压缩文件,但我希望尽可能快地启动。 回答1 根据文档,如果您将存档文件从本地文件系统(不是 URL)传递到
  • 如何使用php从HTML提取img src,标题和alt? [复制](How to extract img src, title and alt from html using php? [duplicate])
    问题 这个问题已经在这里有了答案: 您如何在PHP中解析和处理HTML / XML? (30个答案) 1年前关闭。 我想创建一个页面,其中列出我网站上的所有图像,并附带标题和替代表示。 我已经写了一个小程序来查找和加载所有HTML文件,但是现在我被困在如何从此HTML中提取src , title和alt的问题: <img src="/image/fluffybunny.jpg" title="Harvey the bunny" alt="a cute little fluffy bunny" /> 我想应该使用一些正则表达式来完成此操作,但是由于标记的顺序可能会有所不同,而且我需要所有这些正则表达式,所以我真的不知道如何以一种优雅的方式解析它(我可以通过char方式,但这很痛苦)。 回答1 编辑:现在我知道了 使用正则表达式解决此类问题不是一个好主意,并且可能导致无法维护和不可靠的代码。 最好使用HTML解析器。 用正则表达式解决方案 在这种情况下,最好将流程分为两部分: 获取所有的img标签提取他们的元数据 我将假设您的文档不是xHTML严格的,因此您不能使用XML解析器。 带有此网页源代码的EG: /* preg_match_all match the regexp in all the $html string and output everything as an
  • 如何修复'android.os.NetworkOnMainThreadException'?(How to fix 'android.os.NetworkOnMainThreadException'?)
    问题 运行RssReader的Android项目时出现错误。 代码: URL url = new URL(urlToRssFeed); SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); XMLReader xmlreader = parser.getXMLReader(); RssHandler theRSSHandler = new RssHandler(); xmlreader.setContentHandler(theRSSHandler); InputSource is = new InputSource(url.openStream()); xmlreader.parse(is); return theRSSHandler.getFeed(); 它显示以下错误: android.os.NetworkOnMainThreadException 如何解决此问题? 回答1 注意:API级别30不推荐使用AsyncTask。 AsyncTask | Android开发人员 当应用程序尝试在其主线程上执行联网操作时,将引发此异常。 在AsyncTask中运行您的代码: class RetrieveFeedTask extends
  • 如何修复'android.os.NetworkOnMainThreadException'?(How to fix 'android.os.NetworkOnMainThreadException'?)
    问题 运行RssReader的Android项目时出现错误。 代码: URL url = new URL(urlToRssFeed); SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); XMLReader xmlreader = parser.getXMLReader(); RssHandler theRSSHandler = new RssHandler(); xmlreader.setContentHandler(theRSSHandler); InputSource is = new InputSource(url.openStream()); xmlreader.parse(is); return theRSSHandler.getFeed(); 它显示以下错误: android.os.NetworkOnMainThreadException 如何解决此问题? 回答1 注意:在API级别30中不推荐使用AsyncTask。 AsyncTask | Android开发人员 当应用程序尝试在其主线程上执行联网操作时,将引发此异常。 在AsyncTask中运行您的代码: class RetrieveFeedTask