0
iOSでthisページを再作成しようとしています。私は404を受け取るしかしiOS HTML POSTリクエスト
@IBAction func testHTTPPost(sender: AnyObject) {
let request = NSMutableURLRequest(URL: NSURL(string: "https://banner.sbcc.edu/PROD/pw_pub_sched.p_listthislist")!)
request.HTTPMethod = "POST"
let postString = "TERM=201730&TERM_DESC=Fall 2016&sel_subj=dummy&sel_day=dummy&sel_schd=dummy&sel_camp=dummy&sel_ism=dummy&sel_sess=dummy&sel_instr=dummy&sel_ptrm=%&level=CR"
request.HTTPBody = postString.dataUsingEncoding(NSISOLatin1StringEncoding)
request.HTTPShouldHandleCookies = true
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) in
guard error == nil && data != nil else { // check for fundamental networking error
print("error=\(error)")
return
}
if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 { // check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(response)")
}
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(responseString)")
}
task.resume()
}
:
<FORM ACTION="pw_pub_sched.p_listthislist" METHOD="post">
は私が設定し、次のHTTP POSTリクエストを作成することができたRob's answer hereを使用して次のように私は、検索パラメータを送信するために必要なHTMLのPOSTリクエストがあります毎回エラーが発生します。これが出力されます:私は私のブラウザでhttps://banner.sbcc.edu/PROD/pw_pub_sched.p_listthislistに直接アクセスしようとすると
statusCode should be 200, but is 404
response = Optional(<NSHTTPURLResponse: 0x7f8e398d2410> { URL: https://banner.sbcc.edu/PROD/pw_pub_sched.p_listthislist } { status code: 404, headers {
Connection = "Keep-Alive";
"Content-Length" = 215;
"Content-Type" = "text/html; charset=iso-8859-1";
Date = "Fri, 27 May 2016 19:23:23 GMT";
"Keep-Alive" = "timeout=5, max=100";
Server = "Oracle-Application-Server-11g";
} })
responseString = Optional(<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /PROD/pw_pub_sched.p_listthislist was not found.</p>
</body></html>
)
私はまた、404エラーを思い付きます。検索ページで[送信]ボタンを使用するだけで、結果ページが正常に表示されます。しかし、私は検索ページへのリクエストを直接試みたし、404エラーを受け取り、それが私のコードであると信じさせました。このリクエストを送信する必要がある別の場所がありますか?なぜ私は検索ページを通過しない限り、このページは一見存在しないのでしょうか?
いいえ、おそらくあなたのコードではありません(直接)。彼らはおそらくリファラーチェック、またはクッキー/スパム対策のセンチネルを持っているので、検索ページからは動作しますが、直接またはコードからは実行されません。あなたのコードは検索ページから送られたすべてのものを正確に再現しなければなりません。つまり、ページを初期化してセッションを確立し、スパムトークンを取得/抽出することを意味します。 –
あなたの返事をありがとう。検索ページファイルを自分のコンピュータに保存して変更すると、自分のHTMLドキュメントから送信されたときにも機能します。したがって、要求がどこから来るかは重要ではないようです。彼らの要件をチェックしたり、要件を遵守する方法はありますか? –
ありがとう、私はそれを調べます。私はどのページを入手しますか?検索結果ページまたは検索ページ –