http. -post被射击两次



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

该应用程序正常工作,API正在接收数据,但是HTTP. -post似乎正在启动两次(两次调用API(

这使我的API保存了两次记录。在添加发送记录之前,我没有可能检查的方法。由于我的API只是保存了新记录,因此每当收到调用时,它都会保存它并返回移动应用程序的值(内置flutter(。

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

我已经阅读了有关访问对照 - 允许原素的信息,以及如何将其放在我的.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;

我在Flutter Web上也有相同的问题;我将HTTP软件包更改为Dio,这解决了我的问题:

https://pub.dev/packages/dio

最新更新