• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php - 将 JSON 字符串从 iOS 应用程序传递到 PHP Webservice

[复制链接]
菜鸟教程小白 发表于 2022-12-12 11:57:29 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我熟悉 iOS/Xcode 开发,现在正在尝试开发自己的 Web 服务。不幸的是,我正在努力寻找将 JSON 字符串从我的 iOS 应用程序传递到 PHP 页面的最佳方法。

在 xcode 中,我创建了一个类似于以下内容的 JSON 字符串:

{"email" : "",  "name" : "Test Rest",}

然后我正在创建一个 URL (GET):

//localhost/index.php?method=createRestaurant&json={"email" : "",  "name" : "Test Rest",}

我正在尝试使用 NetBeans 调试 PHP,但 NetBeans 和 iOS 都因 URL 错误或无效字符错误而失败,据我猜测是 JSON 字符失败{}。

如果我使用 Chrome PostMan 并发出相同的 URL,它可以工作,这证明 PHP 正在工作/正在做我需要它做的事情。

因此,总而言之,在 URL 中包含 JSON 数据的最佳方式是什么需要在 XCode 中进行更改,从而影响 JSON 的编码方式?

  NSData *jsonData = [NSJSONSerialization dataWithJSONObject:myDictionary options:NSJSONWritingPrettyPrinted  error:&error];
    jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

在理想情况下,我应该使用 Java,但由于速度、环境成本等原因,我正试图让我的系统使用 PHP。解决方案完成后,我将着手将解决方案移植到 Java。

感谢您的帮助。



Best Answer-推荐答案


一些想法:

  1. 您的 JSON 无效。你有一个额外的逗号。查看 JSON Lint .

  2. 您应该对 URL 参数进行百分比转义,因为 URL 中不允许使用空格等字符。您可以使用 stringByAddingPercentEscapesUsingEncoding .或者更好的是,如果您的字符串可能包含其他一些无法在单个 URL 参数中使用的有效 URL 字符,您可以使用 Core Foundation CFURLCreateStringByAddingPercentEscapes ,这给了你更多的控制权。我使用了一个 NSString 类别,它为这个 CoreFoundation 函数提供了一个简单的接口(interface):

    @implementation NSString (UrlEncode)
    
    + (NSString *)stringByAddingPercentEscapesForNSString *)string
                    legalURLCharactersToBeEscapedNSString *)legalURLCharactersToBeEscaped
                                    usingEncodingNSStringEncoding)encoding
    {
        return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                                         (CFStringRef)string,
                                                                         NULL,
                                                                         (CFStringRef)legalURLCharactersToBeEscaped,
                                                                         CFStringConvertNSStringEncodingToEncoding(encoding)
                                                                         ));
    }
    
    - (NSString *)stringByAddingPercentEscapesForNSString *)legalURLCharactersToBeEscaped
                                    usingEncodingNSStringEncoding)encoding
    {
        return [NSString stringByAddingPercentEscapesFor:self
                           legalURLCharactersToBeEscaped:legalURLCharactersToBeEscaped
                                           usingEncoding:encoding];
    }
    
    - (NSString *)stringByAddingPercentEscapesForURLParameterUsingEncodingNSStringEncoding)encoding
    {
        return [NSString stringByAddingPercentEscapesFor:self
                           legalURLCharactersToBeEscaped";/?&=+$,"
                                           usingEncoding:encoding];
    }
    
    @end
    

    因此,您可以在将 JSON 字符串添加到 URL 之前对其使用 stringByAddingPercentEscapesForURLParameterUsingEncoding。或者您可以自己调用 CFURLCreateStringByAddingPercentEscapes

关于php - 将 JSON 字符串从 iOS 应用程序传递到 PHP Webservice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235712/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap