我需要啥代码来修复 Apache HTTP 客户端删除?

Posted

技术标签:

【中文标题】我需要啥代码来修复 Apache HTTP 客户端删除?【英文标题】:What code do I need to fix Apache HTTP Client removal?我需要什么代码来修复 Apache HTTP 客户端删除? 【发布时间】:2016-03-31 04:50:20 【问题描述】:

android 6.0 Marshmallow 版本 23.0 破坏了我的代码 运行 Android Studio 1.5.1。

由 Apache HTTP 客户端删除引起

developer.android.com Android 6.0 Changes 说改用 HttpURLConnection 类。

package ...

import org.apache.http.protocol.HTTP; // here is my error -- Cannot resolve symbol 'HTTP'

class ...   

    Intent emailIntent;

    void share()  // put the data in a blank gmail that the user can send -- they choose the recipients
        emailIntent = new Intent(Intent.ACTION_SEND);
        emailIntent.setType(HTTP.PLAIN_TEXT_TYPE); // here is my error -- Cannot resolve symbol 'HTTP'
        emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]""); // recipients
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, "ShareSubject");
        emailIntent.putExtra(Intent.EXTRA_TEXT, idList.getText() + "\n" + defList.getText() + "\n");
        startActivityForResult(emailIntent, 1);
    

 // Class

以上代码适用于 Android 5 版本 22.0 我将 import apache 替换为:

导入 java.net.HttpURLConnection; 但 Android Studio 显示此行未使用。

我在 HttpURLConnection 下搜索了 android developer,但在 email 或 share 下没有找到任何东西。 我在 apache 中搜索 HTTP.PLAIN_TEXT_TYPE 并被弃用(我痛苦地意识到了这一点)。 我看到代码“如何向服务器发出 HTTP POST 请求”,但没有看到如何填充电子邮件。 我怀疑我必须发布到 gmail“服务器”,但我不知道如何。 我注释掉错误的行:emailIntent.setType(HTTP.PLAIN_TEXT_TYPE); 并得到以下错误:

android.content.ActivityNotFoundException: 没有找到处理 Intent act=android.intent.action.SEND flg=0x1 (有剪辑) (有额外) 的活动

此电子邮件共享与您在手机上查看某些代码并想要共享它时使用的功能相同。 您单击菜单,然后单击“共享”,它会填充您可以发送的 gmail(通常在桌面上发送给您自己)。 您能否分享我缺少的将在 Android 6 下运行的代码?

【问题讨论】:

我正要写一个关于android useLibrary 'org.apache.http.legacy' 的答案,但你想做什么?使用 http 库发送电子邮件!? 我查看了 legacy,但无法使其运行。我想填充电子邮件 (gmail) 的主题和正文,并为用户添加收件人并发送它。 但是发送邮件与http库无关...哦,您使用org.apache.http.protocol.HTTP.PLAIN_TEXT_TYPE...我有一个更好的主意...:-) 【参考方案1】:

我花了一点时间才明白你的问题。我检查了 SDK 的完整源代码,确实没有其他常量可以使用。但是,您要搜索的字符串是 "text/plain"。可以直接插入。

不过我建议使用其他代码:

Intent emailIntent = new Intent(Intent.ACTION_SENDTO,
                                Uri.fromParts("mailto", "you@example.com", null));
emailIntent.putExtra(Intent.EXTRA_EMAIL, /*...*/);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, /*...*/);
emailIntent.putExtra(Intent.EXTRA_TEXT, /*...*/);
startActivityForResult(emailIntent, 1);

这个意图只会打开真正的邮件客户端。

【讨论】:

以上是关于我需要啥代码来修复 Apache HTTP 客户端删除?的主要内容,如果未能解决你的问题,请参考以下文章

django选择啥框架做前端UI比较好

http400错误啥意思,怎样解决呢?

应该使用啥 http 状态代码来告诉客户端会话已超时?

使用 Apache 修复别名目录上的 403 Forbidden

是否可以使用 Apache HTTPClient 4.2.5 发出 HTTP/2 请求?

apache commons http客户端效率