Android JSON HttpClient 使用 HttpResponse 将数据发送到 PHP 服务器

2024-02-29

我目前正在尝试从 Android 应用程序发送一些数据到 php 服务器(两者都由我控制)。

应用程序中的表单上收集了大量数据,这些数据被写入数据库。这一切都有效。

在我的主代码中,首先我创建一个 JSONObject(在本例中我已将其删减):

JSONObject j = new JSONObject();
j.put("engineer", "me");
j.put("date", "today");
j.put("fuel", "full");
j.put("car", "mine");
j.put("distance", "miles");

接下来,我传递对象以进行发送,并接收响应:

String url = "http://www.server.com/thisfile.php";
HttpResponse re = HTTPPoster.doPost(url, j);
String temp = EntityUtils.toString(re.getEntity());
if (temp.compareTo("SUCCESS")==0)
{
    Toast.makeText(this, "Sending complete!", Toast.LENGTH_LONG).show();
}

HTTPPoster 类:

public static HttpResponse doPost(String url, JSONObject c) throws ClientProtocolException, IOException 
{
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost request = new HttpPost(url);
    HttpEntity entity;
    StringEntity s = new StringEntity(c.toString());
    s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
    entity = s;
    request.setEntity(entity);
    HttpResponse response;
    response = httpclient.execute(request);
    return response;
}

这会得到响应,但服务器返回 403 - Forbidden 响应。

我尝试稍微更改一下 doPost 函数(这实际上好一点,正如我所说,我有很多要发送,基本上是 3 个具有不同数据的相同表单 - 所以我创建了 3 个 JSONObject,每个表单条目一个 - 条目来自数据库而不是我正在使用的静态示例)。

首先我稍微改变了调用方式:

String url = "http://www.myserver.com/ServiceMatalan.php";
Map<String, String> kvPairs = new HashMap<String, String>();
kvPairs.put("vehicle", j.toString());
// Normally I would pass two more JSONObjects.....
HttpResponse re = HTTPPoster.doPost(url, kvPairs);
String temp = EntityUtils.toString(re.getEntity());
if (temp.compareTo("SUCCESS")==0)
{
    Toast.makeText(this, "Sending complete!", Toast.LENGTH_LONG).show();
}

好的,对 doPost 函数的更改:

public static HttpResponse doPost(String url, Map<String, String> kvPairs) throws ClientProtocolException, IOException 
{
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(url);
    if (kvPairs != null && kvPairs.isEmpty() == false) 
    {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(kvPairs.size());
        String k, v;
        Iterator<String> itKeys = kvPairs.keySet().iterator();
        while (itKeys.hasNext()) 
        {
            k = itKeys.next();
            v = kvPairs.get(k);
            nameValuePairs.add(new BasicNameValuePair(k, v));
        }             
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    }
    HttpResponse response;
    response = httpclient.execute(httppost);
    return response;
}

好的,这将返回响应 200

int statusCode = re.getStatusLine().getStatusCode();

然而,服务器上接收到的数据无法解析为 JSON 字符串。我认为它的格式很糟糕(这是我第一次使用 JSON):

如果在 php 文件中我对 $_POST['vehicle'] 进行回显,我会得到以下内容:

{\"date\":\"today\",\"engineer\":\"me\"}

谁能告诉我哪里出了问题,或者是否有更好的方法来实现我想要做的事情?希望以上说得有道理!


经过大量阅读和搜索后,我发现问题所在,我相信服务器上启用了 magic_quotes_gpc 。

因此,使用:

json_decode(stripslashes($_POST['vehicle']));

在上面的示例中,删除了斜杠并允许正确解码 JSON。

仍然不确定为什么发送 StringEntity 会导致 403 错误?

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

Android JSON HttpClient 使用 HttpResponse 将数据发送到 PHP 服务器 的相关文章

  • 安装后隐藏 Android 应用程序图标

    我看到谷歌应用程序中有一些GPS应用程序 安装后 该应用程序将没有图标显示 但会在后台运行服务 我将如何实现这一目标 要从启动器中删除应用程序 请不要将这些行与主要活动放在AndroidManifest xml
  • 为什么 mysqli num_rows 总是返回 0?

    我在使用 mysqli 获取要返回的行数时遇到了问题 尽管确实有一些结果 但我每次都只是得到 0 if stmt mysqli gt prepare SELECT id title visible parent id FROM conten
  • 不要保留活动 - 这样做的目的是什么?

    标题是非常不言自明的 我明白这个开发者选项的作用 What I 不明白有以下几点 首先为什么要引入这个选项 经过这些年来该框架经历了所有的变化 它仍然有用吗 我很想知道这个选择背后的原因 我相信这是一个用于调试目的的功能 来自钛文档 htt
  • 如何使用appium自动化Android手机后退按钮

    我正在使用 Appium python 客户端库 对 Android 上的混合移动应用程序进行测试自动化 我无法找到任何方法来自动化或创建手势以使用 电话后退 按钮返回到应用程序的上一页 有没有可以使用的驱动函数 我尝试了 self dri
  • 两个具有相同 id 的视图

    安卓如何使用R id id name膨胀 XML 后查找视图 1 假设我有两个 XML 每个按钮都有相同的 id 2 我对它们进行了膨胀并将它们转换为视图 3 R id类中只有一个int将为这两个按钮创建 android 如何区分这些具有相
  • Android ViewPager - 在左侧和右侧显示页面预览

    我用的是安卓系统ViewPager 我想要做的是在左侧和右侧显示页面的预览 我已经知道在哪里可以使用否定pageMargin显示右侧的预览 setPageMargin 100 无论如何 我也可以显示左侧的预览吗 它基本上类似于我正在寻找的画
  • 如何防止 Xamarin Android 应用程序的设备字体大小影响?

    如果我更改设备字体 那么它也会更改我的应用程序字体 我不想根据设备字体更改我的应用程序字体 于是我就搜索了一下这个问题 结果发现方面 https developer android com guide topics resources mo
  • 为 Android 编译时显示 FFMPEG 错误

    我正在尝试将 ffmpeg 添加到我的 android 项目中 我使用的是 ubuntu 14 04 操作系统 我正在关注此链接 Link https software intel com en us android blogs 2013
  • 是否可以使用 Javascript 读取 PHP 会话?

    我正在使用 cakePHP 1 26 在控制器中 我得到了一个包含以下代码行的函数 this gt Session gt write testing user this gt Session gt read testing 现在系统编写了一
  • 在 Android 模拟器中更改屏幕亮度

    Android模拟器可以测试屏幕亮度变化吗 我尝试过各种示例 它们都使用以下代码片段 WindowManager LayoutParams lp window getAttributes lp screenBrightness some f
  • 使用 PHP 5.3 ?: 运算符

    有了这个测试页 page int GET page 1 echo page 我不明白页面未定义时得到的输出 Request Result page 2 2 page 3 3 page 1 error Undefined index page
  • php包含来自另一个目录的文件

    这是一个结构示例 main css style css include article1 php article2 php header php index php 在我的 header php 中 我有以下 css 代码 例如 在我的 i
  • PHP 错误请求中 HTTP 请求失败

    我可以直接从浏览器请求 URL Web 服务 WS 但是当我在代码中使用 file get contents 或 fopen 方法时 我收到一条错误消息 有人有不使用curl的解决方案吗 public function sendHttpRe
  • 如何使用支持FileProvider将内容分享给其他应用程序?

    我正在寻找一种使用 Android 支持库与外部应用程序正确共享 而不是打开 内部文件的方法文件提供者 http developer android com reference android support v4 content File
  • 从命令行运行 PHP 脚本

    如何使用用于解析 Web 脚本的 PHP 解释器从命令行运行 PHP 脚本 我有一个phpinfo php从网络访问的文件显示German已安装 但是 如果我运行phpinfo php从命令行使用 php phpinfo php and g
  • 当应用程序打开时,应用程序未显示接收 FCM 的通知

    当我从 Firebase 发送推送时 如果应用程序在后台或已关闭 我会收到通知 但当应用程序打开时不会 调试我发现它在 MyMessagingService 中特别是在 onMessageReceived 处停止 所以我猜我的问题在于生成通
  • php 打印 aa aaa ab aab 直到 zzz 的算法

    你好 我需要打印从 a 到 zzz 最多 3 个字母 例如我的输出应该是 A B Z AA AB AZ BA BB ZZ AAA AAB ZZZ 我在过去的 5 个小时里努力尝试 我找不到任何逻辑 我尝试了下面的代码 PHP 有一个方便的功
  • php 崩溃后 mysql 表被锁定

    我有一个 MySQL DB 和一个 innoDB 表 我有一个 php 页面 用于连接 锁定表 进行一些更新 然后解锁表 PHP 页面通过 wamp 与 apache 一起提供 php页面将文件上传到数据库 我决定通过上传一个大小大于分配给
  • 如何以 Magento 方式实现库存过滤器?

    在我的 magento 网站上可以看到缺货的产品 我想要在分层导航中添加一个自定义过滤器 其中显示 排除缺货 当客户单击它时 应该隐藏缺货产品 默认情况下 我在 系统 gt 配置 gt 目录 gt 库存 下启用显示 显示缺货产品 即我希望客
  • 在为 OSMDroid 实现片段时,maps.y.p.onResume(未知来源)处出现 NulPointerException

    我目前正在尝试将我的 OSMDroid 地图活动转移到片段中 似乎一切都已正确设置 但我收到了这个奇怪的 NullPointerException 我不确定能否解决 02 20 23 59 36 140 E AndroidRuntime 9

随机推荐

  • Android 用动画连续移动背景

    我想做的是水平移动背景并让它无限重复 我尝试使用ImageSwitcher用动画来实现这种效果 但无法使其正常工作 这是我到目前为止的代码L public class MainActivity extends AppCompatActivi
  • 值连接不是 org.apache.spark.rdd.RDD 的成员

    我收到此错误 value join is not a member of org apache spark rdd RDD Long Int Long String Array 0 forSome type 0 lt String Doub
  • 使用不同的锚点重新加载页面

    刚刚被一个问题困住了 我有一个带有 Jquery UI 选项卡的页面 通过向链接添加哈希标签 可以从不同的页面访问每个选项卡 并使用我需要的选项卡加载页面 但是 我还需要访问同一页面中的不同选项卡 我想出的是添加目标 parent 到带有哈
  • 使用 Mclust 进行聚类会产生空聚类

    我正在尝试使用 Mclust 对我的经验数据进行聚类 使用以下非常简单的代码时 library reshape2 library mclust data lt read csv file choose header TRUE check n
  • 将 Meraki SDK 导入 python Azure 函数应用程序时出现 HTTP 500 错误

    当我导入 Meraki 时 from meraki meraki import Meraki它会导致 HTTP 500 错误 这在我的本地计算机上按预期工作 但是当上传到我的 Python Azure Function 应用程序时 它会导致
  • 根据选择值过滤表行

    我需要根据选择值过滤表行 当选择的值为 空 时 表必须隐藏 如果选择值是 1 则表必须可见 并且必须仅显示第一个表列包含值 1 的行 问题是这个 id 列包含多个 id 例如 1 2 由于我的 JQuery 技能不是最好的 我需要你们帮助我
  • 调节/速率限制红宝石机械化

    我需要调节 Mechanize 实例与 API 连接的频率 每 2 秒一次 因此限制连接到该或更多 So this instance pre connect hooks lt lt Proc new sleep 2 我原以为这会起作用 而且
  • 使用 Play Framework 检索应用程序内的端口号

    我的系统上有两个 Play 框架 Web 应用程序在端口 9001 和 9002 上运行 我想知道是否有任何方法可以从我的 Java 代码中检索它们在哪个端口上运行 这可能吗 是的 你可以这样获取端口 int port Integer pa
  • 使用 bitbucket 在 Azure 上部署 Angular2 项目时出现 package.json 错误

    我在 azure 上部署 angular2 应用程序时遇到问题 我在以下行中收到错误 engines node 6 2 1 我给出的版本是 WEBSITE NODE DEFAULT VERSION 的值为 6 2 1 任何对此有想法的人请分
  • 字符串中包含组中的任何字符吗?

    我有一组字符 等 我也有一个字符串 可以说 这是我的字符串 我的字符串 我想检查字符串中是否存在任何字符 这不是检查子字符串 而是检查集合中的字符 我可以这样做 my str find or my str find or my str fi
  • 如何创建文件并写入文件?

    最简单的方法是什么用 Java 创建并写入 文本 文件 https docs oracle com javase tutorial essential io file html 请注意 下面的每个代码示例都可能会抛出异常IOExceptio
  • 将一组新数据写入 Plist 而不是覆盖它

    我试图获取一个 plist 来存储多组数据 但每次保存 使用 ActionSheet 中的按钮 时 它都会覆盖前一组数据 我想添加多个 朋友 及其数据 我不太热衷于使用 Core Data 所以我想知道如何使用 Plist 来做到这一点 这
  • NSAsynchronousFetchRequest - 应该在主线程上显式完成更新

    我正在创建一个 NSAsynchronousFetchRequest 其中有一个完成块 我见过各种示例 其中一些包括在主线程上使用调度队列 而另一些则没有 例如 Ray Wenderlich 核心数据手册不会在主线程上调用结果 执行结果时我
  • React Native 堆栈跟踪

    I have React Native App与 Firebase Crashlytics 关联 问题是 firebase 发送不可读的堆栈跟踪 如下所示 有任何方法可以读取此类错误 我只想知道什么时候抛出错误 这是我的堆栈跟踪 致命异常
  • 启用服务器端加密的跨账户访问 AWS SQS

    上下文 AWS 账户 2 中有一个 API 将 SQS url 作为其输入之一并向其发布输出 帐户 1 的所有者希望将此 API 与他自己的 SQS 队列一起使用 账户 1 有一个启用了 SSE KMS 的 SQS 队列 账户 1 的所有者
  • 构建 Qt - NMAKE:致命错误 U1077:“cd”:返回代码“0x2”

    我正在尝试使用 msvc2015 构建带有静态链接的 Qt5 5 但出现以下错误 实际上有很多错误 但我只列出了一些 它们都完全相同 K Archivos de programa Microsoft Visual Studio 14 0 V
  • pack://application:,/ResourceFile.xaml 永远不会工作

    我从来没有能够让资源字典的这种参考格式发挥作用 我缺少什么 设想 创建并组装一些用户控件 在根目录下有所说的文件 根 主题 ColorThemes xaml ColorThemes xaml 文件的构建操作设置为Resource http
  • 覆盖本地资源字典中的系统颜色

    我试图隐藏指示 WPF 中选择的视觉提示ListBox 这个答案 https stackoverflow com questions 4343793 how to disable highlighting on listbox but ke
  • 使用多个类实现一个接口

    这个问题是在一次采访中问我的 我厌倦了在这里谷歌搜索 我有一个包含 100 个方法的接口 我不想在一个类中实现所有这 100 个方法 有没有一种方法可以通过使用多个类来实现这 100 个方法而不重复实现 例如 A 类 仅 实现前 10 个方
  • Android JSON HttpClient 使用 HttpResponse 将数据发送到 PHP 服务器

    我目前正在尝试从 Android 应用程序发送一些数据到 php 服务器 两者都由我控制 应用程序中的表单上收集了大量数据 这些数据被写入数据库 这一切都有效 在我的主代码中 首先我创建一个 JSONObject 在本例中我已将其删减 JS