Отправить запрос на WordPress Rest API в флаттер - PullRequest
0 голосов
/ 05 апреля 2020

Я застрял как начинающий. Я хочу опубликовать остальные API-запросы во флаттере, используя WordPress в качестве бэкэнда. Я могу опубликовать запрос в почтальоне, но не знаю, как это сделать во флаттере. Насколько я пишу в приложении флаттера.

import 'dart:async';
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

Future<JwtToken> createjwtToken(String username,String password) async {
  final http.Response response = await http.post(
    'http://e4sftttpqshahryar.atwebpages.com/wp-json/jwt-auth/v1/token',
    headers: <String, String>{
      'Content-Type': 'application/json; charset=UTF-8',
    },
    body: jsonEncode(<String, String>{
      'username': username,
      'password': password,
    }),
  );

  if (response.statusCode == 201) {
    return JwtToken.fromJson(json.decode(response.body));
  } else {
    throw Exception('Failed to create album.');
  }
}

class JwtToken {
  String token;
  String userEmail;
  String userNicename;
  String userDisplayName;

  JwtToken(
      {this.token, this.userEmail, this.userNicename, this.userDisplayName});

  JwtToken.fromJson(Map<String, dynamic> json) {
    token = json['token'];
    userEmail = json['user_email'];
    userNicename = json['user_nicename'];
    userDisplayName = json['user_display_name'];
  }
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  MyApp({Key key}) : super(key: key);

  @override
  _MyAppState createState() {
    return _MyAppState();
  }
}

class _MyAppState extends State<MyApp> {
  final TextEditingController _controller = TextEditingController();
  final TextEditingController _controller1 = TextEditingController();
  Future<JwtToken> _futureJwt;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Create Data Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Create Data Example'),
        ),
        body: Container(
          alignment: Alignment.center,
          padding: const EdgeInsets.all(8.0),
          child: (_futureJwt == null)
              ? Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: <Widget>[
                    TextField(
                      controller: _controller,
                      decoration: InputDecoration(hintText: 'Enter Usernam'),
                    ),
                     TextField(
                      controller: _controller1,
                      decoration: InputDecoration(hintText: 'Enter Password'),
                    ),
                    RaisedButton(
                      child: Text('Create Data'),
                      onPressed: () {
                        setState(() {
                          _futureJwt = createjwtToken(_controller.text,_controller1.text);
                        });
                      },
                    ),
                  ],
                )
              : FutureBuilder<JwtToken>(
                  future: _futureJwt,
                  builder: (context, snapshot) {
                    if (snapshot.hasData) {
                      return Text(snapshot.data.token);
                    } else if (snapshot.hasError) {
                      return Text("${snapshot.error}");
                    }

                    return CircularProgressIndicator();
                  },
                ),
        ),
      ),
    );
  }
}

Это может быть достигнуто sh в Post Man as. Я хотел только выделенное значение в моем приложении enter image description here.

Я установил плагин JWT в WordPress для создания токена JWT. В конце моя цель состоит в том, чтобы разместить имя пользователя и пароль в **http://e4sftttpqshahryar.atwebpages.com/wp-json/jwt-auth/v1/token?username=shahryar&password=e4sftttpq, чтобы я мог получить токен Jwt и сделать функцию входа в систему, выхода из системы и обновления пользователя и публиковать информацию в wordpress. Сайт. **

1 Ответ

0 голосов
/ 05 апреля 2020

Наконец, после удаления функции JsonEncode в http.post() //body. API получает токен jwt по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...