2

我正在尝试通过 android 手机访问网络服务。Web 服务在 localhost 上发布。但现在我收到以下错误。有没有人有这方面的经验?

    06-15 14:27:03.969: WARN/System.err(277): org.xmlpull.v1.XmlPullParserException: attr value delimiter missing! (position:START_TAG <html dir='null'>@2:11 in java.io.InputStreamReader@44f4e7d0) 
    06-15 14:27:04.000: WARN/System.err(277):     at org.kxml2.io.KXmlParser.exception(KXmlParser.java:273)
    06-15 14:27:04.000: WARN/System.err(277):     at org.kxml2.io.KXmlParser.error(KXmlParser.java:269)
    06-15 14:27:04.000: WARN/System.err(277):     at org.kxml2.io.KXmlParser.parseStartTag(KXmlParser.java:708)
    06-15 14:27:04.000: WARN/System.err(277):     at org.kxml2.io.KXmlParser.nextImpl(KXmlParser.java:342)
    06-15 14:27:04.000: WARN/System.err(277):     at org.kxml2.io.KXmlParser.next(KXmlParser.java:1385)
    06-15 14:27:04.011: WARN/System.err(277):     at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:1415)
    06-15 14:27:04.011: WARN/System.err(277):     at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126)
    06-15 14:27:04.011: WARN/System.err(277):     at org.ksoap2.transport.Transport.parseResponse(Transport.java:63)
    06-15 14:27:04.099: DEBUG/dalvikvm(277): GC_FOR_MALLOC freed 5747 objects / 296016 bytes in 90ms
    06-15 14:27:04.109: WARN/System.err(277):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100)
    06-15 14:27:04.109: WARN/System.err(277):     at com.psl.virtual.transport.HttpUtil.sendRequest(HttpUtil.java:41)
    06-15 14:27:04.109: WARN/System.err(277):     at com.psl.virtual.ui.VMLoginScreen.check(VMLoginScreen.java:98)
    06-15 14:27:04.109: WARN/System.err(277):     at java.lang.reflect.Method.invokeNative(Native Method)
    06-15 14:27:04.109: WARN/System.err(277):     at java.lang.reflect.Method.invoke(Method.java:521)
    06-15 14:27:04.109: WARN/System.err(277):     at android.view.View$1.onClick(View.java:2067)
    06-15 14:27:04.109: WARN/System.err(277):     at android.view.View.performClick(View.java:2408)
    06-15 14:27:04.109: WARN/System.err(277):     at android.view.View.onKeyUp(View.java:4121)
    06-15 14:27:04.109: WARN/System.err(277):     at android.widget.TextView.onKeyUp(TextView.java:4431)
    06-15 14:27:04.109: WARN/System.err(277):     at android.view.KeyEvent.dispatch(KeyEvent.java:1061)
    06-15 14:27:04.109: WARN/System.err(277):     at android.view.View.dispatchKeyEvent(View.java:3740)
    06-15 14:27:04.109: WARN/System.err(277):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:788)
    06-15 14:27:04.109: WARN/System.err(277):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:788)
    06-15 14:27:04.120: WARN/System.err(277):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:788)
    06-15 14:27:04.120: WARN/System.err(277):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:788)
    06-15 14:27:04.120: WARN/System.err(277):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1667)
    06-15 14:27:04.120: WARN/System.err(277):     at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1102)
    06-15 14:27:04.120: WARN/System.err(277):     at android.app.Activity.dispatchKeyEvent(Activity.java:2063)
    06-15 14:27:04.120: WARN/System.err(277):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1643)
    06-15 14:27:04.120: WARN/System.err(277):     at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2471)
    06-15 14:27:04.120: WARN/System.err(277):     at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2441)
    06-15 14:27:04.130: WARN/System.err(277):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1735)
    06-15 14:27:04.130: WARN/System.err(277):     at android.os.Handler.dispatchMessage(Handler.java:99)
    06-15 14:27:04.130: WARN/System.err(277):     at android.os.Looper.loop(Looper.java:123)
    06-15 14:27:04.130: WARN/System.err(277):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    06-15 14:27:04.130: WARN/System.err(277):     at java.lang.reflect.Method.invokeNative(Native Method)
    06-15 14:27:04.130: WARN/System.err(277):     at java.lang.reflect.Method.invoke(Method.java:521)
    06-15 14:27:04.130: WARN/System.err(277):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    06-15 14:27:04.130: WARN/System.err(277):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    06-15 14:27:04.130: WARN/System.err(277):     at dalvik.system.NativeStart.main(Native Method)
4

1 回答 1

1

我发现了两种情况,其中 XmlPullParser 不喜欢解析 HTML - 在第一种情况下,HTML 是有效的,在第二种情况下,HTML 是无效的,但似乎很可能会发生:

1) 未引用的属性值,如:

<img class=logoimg ...

然而HTML (5.1)规范允许它:

不带引号的属性值语法 属性名称,后跟零个或多个空格字符,后跟单个 U+003D 等号字符,后跟零个或多个空格字符,然后是属性值,除了上面给出的要求对于属性值,不得包含任何文字空格字符、任何 U+0022 引号字符 (")、U+0027 撇号字符 (')、U+003D 等号字符 (=)、U+003C 小于号字符(<)、U+003E GREATER-THAN SIGN 字符 (>) 或 U+0060 重音字符 (`),并且不得为空字符串。

在下面的示例中,value 属性使用不带引号的属性值语法给出:

<input value=yes>

如果使用不带引号的属性语法的属性后跟另一个属性或上面开始标记语法的步骤 6 中允许的可选 U+002F SOLIDUS 字符 (/),则必须有一个空格字符将两者分开。

2) 以逗号分隔的属性值,如:

<meta name=viewport content="width=device-width, initial-scale=1">

再次从规范:

如果使用双引号属性语法的属性后跟另一个属性,则必须用空格字符分隔两者。

简而言之,解析代码(即使用 XmlPullParser 的代码)需要容忍异常情况——特别是因为解析器似乎继续运行良好。

于 2017-02-14T13:32:35.150 回答