颤振图显示实际请求



我正在使用flutter_graphql并不断获得异常OperationException(linkException: ResponseFormatException(originalException: FormatException:输入的意外结束(在字符1),)^ graphqlErrors: []),

是否有一种方法来显示实际的请求发送?希望在控制台中看到实际传递的请求

class GraphqlClient {
static String _token;
static final String serverUrl =
GlobalConfiguration().getString(Config.GRAPHQL_URL);
static final HttpLink httpLink = HttpLink(
serverUrl,
);
static final AuthLink authLink = AuthLink(getToken: () async {
final SharedPrefsRepository _sharedPrefsRepository =
SharedPrefsRepository();
String accountKey = await _sharedPrefsRepository.getAccountKey();
String sessionKey= await _sharedPrefsRepository.getSessionKey();
_token = 'Bearer $accountKey, Bearer $sessionKey';
debugPrint('token '+_token);
return _token ?? '';
});
static final Link link = authLink.concat(httpLink);
static ValueNotifier<GraphQLClient> initializeClient() {
debugPrint('link '+link.toString());
final policies = Policies(
fetch: FetchPolicy.networkOnly,
);

final ValueNotifier<GraphQLClient> client = ValueNotifier<GraphQLClient>(
GraphQLClient(
cache: GraphQLCache(store: HiveStore()),
link: link,
defaultPolicies: DefaultPolicies(
watchQuery: policies,
query: policies,
mutate: policies,
),
),
);
return client;
}
}

Query(
options: QueryOptions(
document: gql(DashboardGraphQL.accountDetailsQuery),
operationName: 'AccountDetails',
),

查询

static const String accountDetailsQuery = """
query AccountDetails {
accountDetails {
... on AccountDetails {
ibanList {
accountId
bicCode
iban
}
accountType
accountNumber
accountNumberShort
accountId
ruid
companyId
accountDataOpened
email
mobile
baseCurrency
balanceInBaseCurrency
lastTransactionDate
}
... on ResponseErrors {
errors {
message
code
displayMessage
... on InternalError {
message
code
displayMessage
context
}
}
}
}
}
"""

您可以创建一个链接,记录您发送的每个请求,然后将其与您的链接连接

class LoggerLink extends Link {

@override
Stream<Response> request(
Request request, [
NextLink? forward,
]) {
Stream<Response> response = forward!(request).map((Response fetchResult) {
final ioStreamedResponse =
fetchResult.context.entry<HttpLinkResponseContext>();
if (kDebugMode) {
print("Request: " + request.toString());
print("Response:" + (ioStreamedResponse?.toString() ?? "null"));
}
return fetchResult;
}).handleError((error) {
// throw error;
});
return response;
}
LoggerLink();
} 

你可以创建这个链接的实例

final _loggerLink = LoggerLink() ;

那么你将把它连接到你的客户端

client = ValueNotifier<GraphQLClient>(GraphQLClient(
link: _loggerLink.concat(httpLink),
cache: GraphQLCache(),
defaultPolicies: DefaultPolicies(
watchQuery: Policies(fetch: FetchPolicy.networkOnly),
query: Policies(fetch: FetchPolicy.networkOnly),
mutate: Policies(fetch: FetchPolicy.networkOnly),
),
));

注意

httpLink

是你的实际链接

最新更新