HarmonyOS鸿蒙Next中关于Uri解析问题

HarmonyOS鸿蒙Next中关于Uri解析问题

使用如下代码分别解析如下:

const uriObj1 = new uri.URI("mpaas://washMachine6.0?prodNo=CEABAH000&deviceType=0500400L&deviceNetType=device");
const uriObj2 = new uri.URI("mpaas://washMachine?prodNo=CEABAH000&deviceType=0500400L&deviceNetType=device");

// 获取 host
const host1 = uriObj1.host; // 应该为 null
const host2 = uriObj2.host; // 应该为 'washMachine'

// 输出结果
console.log("URI 1 Host:", host1); // 输出: URI 1 Host: null
console.log("URI 2 Host:", host2); // 输出: URI 2 Host: washMachine

更多关于HarmonyOS鸿蒙Next中关于Uri解析问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

"目前有规避方案就是将特殊字符转换为标准格式。

主机名中只能包含英文字母(A - Z)、数字(0 - 9)和连字符(-),不能包含其他字符,这是公用主机名的命名规则。

参考:

import uri from '@ohos.uri'
@Component
struct Test6
{
    @State message: string = 'Hello World';
    aboutToAppear(){
        const uriString: string = 'mpaas://washMachine6-0?prodNo=CEABAH000&deviceType=0500400L&deviceNetType=device'
        const uriStringTest: string = 'mpaas://washMachine?prodNo=CEABAH000&deviceType=0500400L&deviceNetType=device'
        const mUri = new uri.URI(uriString)
        const mUriTest = new uri.URI(uriStringTest)
        console.log(mUri.host, 'host')
        console.log(mUriTest.host, 'host')
    }
    build() {
        Row() {
            Column() {
                Text(this.message)
                .fontSize(50)
                .fontWeight(FontWeight.Bold)
            }
            .width('100%')
        }
        .height('100%')
    }
}

更多关于HarmonyOS鸿蒙Next中关于Uri解析问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Uri解析主要涉及对统一资源标识符(URI)的解析和处理。Uri通常用于标识和定位资源,如文件、网络资源等。鸿蒙Next提供了ohos.utils.Uri类来处理Uri的解析和操作。

  1. Uri的组成:Uri通常由以下部分组成:

    • Scheme:标识资源的协议,如httpfile等。
    • Authority:标识资源的主机或授权信息,如www.example.com
    • Path:资源的具体路径,如/path/to/resource
    • Query:附加的查询参数,如?key=value
    • Fragment:资源的片段标识,如#section1
  2. Uri解析:鸿蒙Next中的Uri类提供了多种方法来解析和操作Uri:

    • Uri.parse(String uriString):将字符串形式的Uri解析为Uri对象。
    • getScheme():获取Uri的Scheme。
    • getAuthority():获取Uri的Authority。
    • getPath():获取Uri的Path。
    • getQuery():获取Uri的Query。
    • getFragment():获取Uri的Fragment。
  3. Uri操作Uri类还提供了方法用于构建和修改Uri:

    • Uri.Builder:用于构建新的Uri对象,可以通过newBuilder()方法获取Builder实例,然后使用scheme(String scheme)authority(String authority)path(String path)query(String query)fragment(String fragment)等方法设置Uri的各个部分,最后通过build()方法生成Uri对象。
    • withAppendedPath(Uri baseUri, String pathSegment):将路径段附加到现有Uri的路径中。
    • withQueryParameter(String key, String value):向Uri的查询参数中添加或修改键值对。
  4. 使用场景:Uri解析在鸿蒙Next中广泛应用于资源访问、网络请求、文件操作等场景。通过Uri类,开发者可以方便地解析和操作Uri,确保资源定位和访问的准确性。

以上是鸿蒙Next中关于Uri解析的基本介绍和相关操作。

在HarmonyOS鸿蒙Next中,Uri解析主要用于处理资源定位和数据交互。Uri(Uniform Resource Identifier)是用于标识和定位资源的字符串。在鸿蒙系统中,Uri解析通常涉及以下几个步骤:

  1. Uri构造:通过Uri类的静态方法或构造函数创建Uri对象,例如Uri.parse("content://com.example.provider/data")

  2. Uri解析:使用Uri对象的方法获取Uri的各个部分,如getScheme()获取协议,getAuthority()获取授权部分,getPath()获取路径等。

  3. Uri匹配:通过UriMatcher类进行Uri的匹配,判断Uri是否符合特定的模式,常用于ContentProvider的Uri匹配。

  4. Uri处理:在ContentProvider中,通过query()insert()update()delete()等方法处理Uri对应的数据操作。

正确解析Uri对于实现跨应用数据共享和资源访问至关重要。开发者需要确保Uri格式正确,并正确处理Uri的各个部分,以保证系统的安全性和数据的正确性。

回到顶部