1

JAVA URLConnection クラスを使用してフォームを送信しようとしていますが、次のページを取得し続けています。

meta http-equiv="refresh" content="1;url=/nidp/jsp/err.jsp?sid=0?error=Required+JavaScript+support+is+not+available.&cause=JavaScript+has+been+disabled+or+the+browse+does+not+support+JavaScript.+Use+a+JavaScript+capable+browser+and%2For+enable+JavaScript+support+in+the+browser.">

POSTリクエストを送信するときに考慮していないCookieまたはJavaScript操作と関係があると思われます。

httpsページなのでwiresharkのPOSTリクエストを見ることができませんでした.POSTパケットがどのようにEclipseを離れるのかよくわかりません. 開発者のツールを使用してリクエストを確認したので、IE POST パケットがどのように見えるかは知っています。

そして今、フォームのために:

<form name="frmlogin" action="Login_Chk.aspx?rk=" method="post" onsubmit='return chk_form()' autoComplete="off">
    <input type="text" name="txtUser" Class="freeinputl" onKeyPress="return chkAlpha(event,'eng');" />
    <input type="text" name="txtId" Class="freeinputl" onKeyPress="return chkDigits(event,'');" />
    <inputtype="password" name="txtPass" class="freeinputl" onKeyPress="return chkAlpha(event,'eng');" />
    <input type='image' name='btnishur' id='btnishur'  tabindex=99 class='hideprint' align=absmiddle src='ok.gif'  onmouseover="this.src='ok_over.gif'" onmouseout="this.src='ok.gif'">
    <input TYPE="hidden" name="javas" value="0">
    <input TYPE="hidden" name="src" value="">
</form>

JavaScript(同じソース上):

<script type="text/javascript" src="/Js/Global.js"></script>
<script type="text/javascript" src="js/Form.js"></script>
<script type="text/javascript">
var sw_caps=false;
function setFocus()
{ 
 obj=document.frmlogin;  
 obj.txtUser.focus();
}
function chk_form()
{
 obj=document.forms[0];
 if(!chkTextField(obj.txtUser,'Username','yes',2,'','')){return false;}
 if(!chkTextField(obj.txtId,'ID','yes',1,'D','')){return false;}
 if(!chkTextField(obj.txtPass,'pass','yes',1,'','')){return false;}
 return chkFormEndShort(obj);
}
</script>

そして私のJavaコード:

public static void doSubmit(String url, Map<String, String> data) throws Exception {
    URL siteUrl = new URL(url);
    HttpsURLConnection conn = (HttpsURLConnection) siteUrl.openConnection();
    conn.setRequestMethod("POST");
    conn.setDoOutput(true);
    conn.setDoInput(true);

    DataOutputStream out = new DataOutputStream(conn.getOutputStream());

    Set keys = data.keySet();
    Iterator keyIter = keys.iterator();
    String content = "";
    for(int i=0; keyIter.hasNext(); i++) {
        Object key = keyIter.next();
        if(i!=0) {
            content += "&";
        }
        content += key + "=" + URLEncoder.encode(data.get(key), "UTF-8");
    }
    System.out.println(content);
    out.writeBytes(content);
    out.flush();
    out.close();
    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line = "";
    while((line=in.readLine())!=null) {
        System.out.println(line);
    }
    in.close();
    System.out.println("protocol = " + siteUrl.getProtocol());
}

public static void main(String[] args) throws Exception {
    Map<String, String> data = new HashMap<String, String>();
    data.put("user", "XYZ");
    data.put("pass", "xyz");
    data.put("id", "123456789");
    data.put("src", "");
    data.put("javas", "1");
    data.put("btnishur.x", "0");
    data.put("btnishur.y", "0");
    doSubmit("https://www.x.y/Login_Chk.aspx?rk=HTTP/1.1", data);

ありがとう!

4

0 に答える 0