无法读取数据,因为它的格式不正确
Posted
技术标签:
【中文标题】无法读取数据,因为它的格式不正确【英文标题】:The data could not be read because it isn't in the correct format 【发布时间】:2015-12-30 07:04:31 【问题描述】:好吧,经过大量搜索,我不知道这是怎么回事,因为我认为我在更换钥匙时已修复并且它正在工作。但是它不再工作了,我没有改变任何东西。请勿重复报告,请没有回答任何问题。
let URL = "http://localhost/donate/payment.php"
let params: Dictionary<String,AnyObject> = ["stripeToken": token.tokenId,
"amount": Int(self.amountTextField.text!)!,
"currency": "usd",
"description": self.emailTextField.text!]
let manager = AFHTTPSessionManager()
manager.responseSerializer.acceptableContentTypes = NSSet(array: ["text/plain", "text/html", "application/json"]) as! Set<String>
manager.PATCH(URL, parameters: params, success: (operation, responseObject) -> Void in
guard let response = responseObject as? [String: String] else
print("failed")
return
) (operation, error) -> Void in
self.handleError(error)
这是我从 appcoda 获得的 php 代码(我从未用 PHP 编写过代码)
<?php
require_once('vendor/autoload.php');
\Stripe\Stripe::setApiKey("key");
$token = $_POST['stripeToken'];
$amount = $_POST['amount'];
$currency = $_POST['currency'];
$description = $_POST['description'];
try
$charge = \Stripe\Charge::create(array(
"amount" => $amount*100, // Convert amount in cents to dollar
"currency" => $currency,
"source" => $token,
"description" => $description)
);
// Check that it was paid:
if ($charge->paid == true)
$response = array( 'status'=> 'Success', 'message'=>'Payment has been charged!!' );
else // Charge was not paid!
$response = array( 'status'=> 'Failure', 'message'=>'Your payment could NOT be processed because the payment system rejected the transaction. You can try again or use another card.' );
header('Content-Type: application/json');
echo json_encode($response);
catch(\Stripe\Error\Card $e)
// The card has been declined
?>
【问题讨论】:
为什么你使用PATCH
方法使用POST
代替
帖子在 ios 9 中已弃用
@HamzaAnsari 我想这就是问题所在。您想将其发布为答案,以便我可以选择它作为正确答案。如果您还可以解释为什么 Patch 不是正确的方法,那就太好了。谢谢
【参考方案1】:
PATCH 方法用于更新现有资源。
而
POST 将要处理的数据(例如,来自 HTML 表单)提交到已识别的资源。数据包含在请求的正文中。 这可能会导致创建新资源或更新 现有资源或两者兼有。
在您的 php 文件中,您使用 POST
方法获取通过请求传递的参数,而您使用 PATCH
方法传递参数,这就是您的服务器在响应中返回错误的原因
【讨论】:
以上是关于无法读取数据,因为它的格式不正确的主要内容,如果未能解决你的问题,请参考以下文章
infoPlist.strings 读取失败:无法读取数据,因为它的格式不正确