问题描述
我正在调用具有VBA基本身份验证的Web服务。我的问题是用户/密码是在第一次成功调用后存储的。这意味着我可以在下一个呼叫中输入错误的用户名/密码,并且工作原理相同。
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.DefaultCompany.DynamoDB"
android:installLocation="preferExternal"
android:versionCode="1"
android:versionName="1.0">
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
<uses-sdk android:minSdkVersion="9" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission android:name="com.amazonaws.unity.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.amazonaws.unity.permission.C2D_MESSAGE" />
<application
android:theme="@android:style/Theme.NoTitleBar"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:debuggable="true">
<activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
<Meta-data android:name="unityplayer.UnityActivity" android:value="true" />
<Meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />
</activity>
</application>
</manifest>
如果我从浏览器中调用Web服务,则是相同的。第一次需要登录,下次无需登录即可工作。删除缓存/ Cookie /历史记录后,我需要再次登录。
我的问题:
解决方法
我发现了将用户名/密码放入.Open方法的关键提示:VBA XMLHTTP disable authentication pop-up
这就是我的工作方式。我现在唯一不能做的就是对用户名和密码进行编码。
Dim objRequest As MSXML2.XMLHTTP30
Set objRequest = New MSXML2.XMLHTTP30
With objRequest
.Open "GET",strUrl,blnAsync,user,passw
.setRequestHeader "Cache-Control","no-cache"
.setRequestHeader "Pragma","no-cache"
.setRequestHeader "If-Modified-Since","Sat,1 Jan 2000 00:00:00 GMT"
While objRequest.readyState <> 4
DoEvents
Wend
strResponse = .responseText
End With
,
要停止缓存,您可以尝试添加:
.setRequestHeader("Cache-Control","no-cache");
.setRequestHeader("Pragma","no-cache");
.setRequestHeader("If-Modified-Since",1 Jan 2000 00:00:00 GMT");