Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uri.tryParse will make the host to be lowercase #1402

Closed
lanshifu opened this issue Oct 26, 2022 · 4 comments
Closed

Uri.tryParse will make the host to be lowercase #1402

lanshifu opened this issue Oct 26, 2022 · 4 comments
Labels
bug Something isn't working

Comments

@lanshifu
Copy link

Environment

Technology Version
Flutter version 3.3.5
Plugin version 6.1.6
Android version
iOS version
Xcode version

Description

the URI host is upCase(mqqopensdkapi://bizAgent),
but I received lowercase in _shouldOverrideUrlLoading callback,by the code avigationAction.request.url

the App could not be launch,because the host is not right。

then I found the source code is url_request.g.dart

final instance = URLRequest(
      url: map['url'] != null ? Uri.tryParse(map['url']) : null,

Uri.tryParse will make the host to be lowercase,Could you please use annother way to parse the Uri,not change to lowercase?

Steps to reproduce

1.test Code:

var url = 'mqqopensdkapi://bizAgent';
var parseResult = Uri.tryParse(url);

print('url==$url');
print('parseUrl=$parseResult');

  1. see the log

I/flutter: url==mqqopensdkapi://bizAgent
I/flutter: parseUrl=mqqopensdkapi://bizagent

the Agent expect to be upcase,but the result is lowerCase。

Images

image

Stacktrace/Logcat

@lanshifu lanshifu added the bug Something isn't working label Oct 26, 2022
@github-actions
Copy link

👋 @lanshifu

NOTE: This comment is auto-generated.

Are you sure you have already searched for the same problem?

Some people open new issues but they didn't search for something similar or for the same issue. Please, search for it using the GitHub issue search box or on the official inappwebview.dev website, or, also, using Google, StackOverflow, etc. before posting a new one. You may already find an answer to your problem!

If this is really a new issue, then thank you for raising it. I will investigate it and get back to you as soon as possible. Please, make sure you have given me as much context as possible! Also, if you didn't already, post a code example that can replicate this issue.

In the meantime, you can already search for some possible solutions online! Because this plugin uses native WebView, you can search online for the same issue adding android WebView [MY ERROR HERE] or ios WKWebView [MY ERROR HERE] keywords.

Following these steps can save you, me, and other people a lot of time, thanks!

@pichillilorenzo
Copy link
Owner

pichillilorenzo commented Oct 26, 2022

Ok, it seems that Uri is causing some problems, also on version 5.x.x.
At this point, maybe I should implement something similar to Uri that maintains also the "raw string value" of it, for issues such as this one.
Also, doing this will break a lot of classes if you are coming from version 5.x.x.
I don't know if, at this point, I should also create a new version 5.8.0 with it.

@pichillilorenzo
Copy link
Owner

Released new version 6.0.0-beta.10 with new type WebUri to replace the Uri dart core type.
With WebUri, you have access to the raw string value used by the Uri parser.
So, if you need the unmodified string, use navigationAction.request.url.rawValue.

For more details on how WebUri works, check the WebUri Official docs.

@lanshifu
Copy link
Author

thanks a lot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants