http.post被解雇了两次

时间:2019-07-05 13:24:42

标签: flutter

我对Flutter有点陌生,我正在构建一个屏幕,该屏幕将数据发布到托管服务器中的PHP内置的API中。该API是由我构建的,该API接收JSON对象,然后保存数据。

该应用程序运行正常,并且API正在接收数据,但是http.post似乎触发了两次(两次调用API)

这使我的API将记录保存了两次。添加发送记录之前,我无法进行任何检查。因为我的API只是保存了一条新记录,所以每当收到呼叫时,它都会保存该记录并返回移动应用程序(内置于Flutter)的值。

如果我使用条件进行检查,则第一个调用将向移动应用返回正确的数据,但是第二个调用将为移动应用返回错误,因为该记录已经存在。

我已经阅读了有关Access-Control-Allow-Origin的信息,并可能是问题所在,并将其放在我的.httaccess文件中

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>

但是没有运气。

任何想法。

注意,我正在使用共享主机。

在Flutter中使用的代码:

class _PostADToServerState extends State<PostADToServer> {
Future<List<JSBResponse>> _postRequest() async {
//    print('Call API function is called');
Map<String, dynamic> myAd = {
  "isbn10": widget.title.isbn10,
  "isbn13": widget.title.isbn13,
  ... [Some fields]
  "titleCondition": widget.title.titleCondition,
  "priceIs": widget.title.priceIs,
  "school_name": widget.title.schoolName
};

String json = jsonEncode(myAd);

var url = 'https://www.example.com/xapis/save_new_ad.php';
var body = json;

var data = await http.post(url,
    headers: {
      "Content-Type": "application/json",
      "accept": "application/json",
      "Access-Control-Allow-Origin": "*",
    },
    body: body);

var jsonData = jsonDecode(data.body);

PHP API中的代码以以下内容开头:

$data = file_get_contents('php://input');
$theTitle = json_decode($data);

然后,我将在$ theTitle对象中找到的内容用作以下内容:

$title = $theTitle->title;

0 个答案:

没有答案