2

AndroidフォンからWebサービスにアクセスしようとしています。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 の解析を好まない 2 つのケースを見つけました。最初のケースでは HTML は有効で、2 番目のケースでは HTML は無効ですが、発生する可能性が高いようです。

1) 引用符で囲まれていない属性値:

<img class=logoimg ...

しかし、HTML (5.1)仕様では次のことが許可されています。

引用符で囲まれていない属性値の構文 属性名、その後に 0 個以上のスペース文字が続き、単一の U+003D EQUALS SIGN 文字が続き、その後に 0 個以上のスペース文字が続き、属性値が続きます。これは、上記の要件に加えて、属性値には、リテラル スペース文字、U+0022 クォーテーション マーク文字 (")、U+0027 アポストロフィ文字 (')、U+003D 等号文字 (=)、U+003C LESS-THAN SIGN 文字を含めることはできません。 (<)、U+003E GREATER-THAN SIGN 文字 (>)、または U+0060 GRAVE ACCENT 文字 (`) であり、空の文字列であってはなりません。

次の例では、引用符で囲まれていない属性値の構文を使用して value 属性が指定されています。

<input value=yes>

引用符で囲まれていない属性構文を使用する属性の後に別の属性が続く場合、または上記の開始タグ構文の手順 6 で許可されているオプションの U+002F SOLIDUS 文字 (/) が続く場合は、2 つを区切る空白文字が必要です。

2) 次のように、コンマで区切られた属性値:

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

再び仕様から:

二重引用符で囲まれた属性構文を使用する属性の後に別の属性が続く場合は、2 つを区切る空白文字が必要です。

簡単に言うと、解析コード (つまり、XmlPullParser を使用するコード) は、例外的なケースを許容する必要があります。

于 2017-02-14T13:32:35.150 に答える