私はユーザーシステムにログインする機能をデバッグするために使用しているシンプルなモバイルアプリをTitaniumに持っています。すべてのHTTPレスポンスヘッダーにアクセスする方法
現時点では、null
として返されるため、現時点ではSet-Cookie
レスポンスヘッダーが表示されていないようです。
私は現在、Titanium SDK 1.7.5を使用しています(1.8はひどく壊れています)。
私のコードは非常に単純で、HTTPClientを使用してのテキストブックの例:
var loginReq = Titanium.Network.createHTTPClient();
var url = 'https://auth.csu.edu.au/login/login.pl';
var targetURL = 'http://my.csu.edu.au'
loginButton.addEventListener('click',function(e)
{
if (username.value != '' && password.value != '')
{
loginReq.open('POST', url);
Ti.API.info('Sending HTTP Request.');
var params = {
username: username.value,
password: password.value,
url: targetURL
}
loginReq.send(params);
}
else {
alert("Username/Password are required");
}
});
loginReq.onload = function() {
var cookie = loginReq.getResponseHeader('Set-Cookie');
Ti.API.info('Response Status: ' + loginReq.status);
Ti.API.info('Response Header - Cookie: ' + cookie);
Ti.API.info('Response Header - Location: ' + loginReq.getLocation());
if (Ti.Platform.osname !== 'android')
Ti.API.info('Headers: ' + JSON.stringify(loginReq.getResponseHeaders()));
var f = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,'test.html');
f.write(this.responseText);
var webview = Ti.UI.createWebView();
webview.url = f.nativePath;
var newWindow = Ti.UI.createWindow();
newWindow.add(webview);
newWindow.open({modal:true});
};
出力は以下のとおりであるが:私はちょうどとしての円の周りと周りつもり
[INFO] Sending HTTP Request.
[INFO] Response Status: 200
[INFO] Response Header - Cookie: null
[INFO] Response Header - Location: https://auth.csu.edu.au/login/login.pl?redirect=true&url=http%3a%2f%2fmy%2ecsu%2eedu%2eau
[INFO] Headers: {"Connection":"Keep-Alive","Transfer-Encoding":"Identity","Keep-Alive":"timeout=5, max=99","Content-Type":"text/html","Server":"Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.7d mod_apreq2-20051231/2.6.0 mod_perl/2.0.4 Perl/v5.8.4","Date":"Thu, 02 Feb 2012 01:45:29 GMT"}
ここで何が間違っているのか分かりません。私に混乱を招くのは、HTTPClient.getResponseHeaders()
も文書化されていないことです(Titanium.Network.HTTPClient-object.html) - Androidでは動作しません。
webviewに認証済みのページが表示されるため、そこに何かがあるはずです(あなたが認証されていない限り、そこにはアクセスできません)。
ヘッダーの完全なリストを取得して、私が想定しているすべてのヘッダーを取得していることを確認するにはどうすればよいですか?
は...そんなに、ありがとうございました。私はノートパソコンを窓から出そうとしていましたが、これははるかに良い解決策です。 – pancake