2016-08-29 30 views
0

で失敗した私は、Androidを開発し、私は以下のOKHTTP3Androidのポスト要求がOKHTTP

https://m.colorado.edu/mycuinfo/にログインしようとしていますに新しいですPOST URLがhttps://m.colorado.edu/mycuinfo/j_security_check

しかし、である私のコード

 OkHttpClient client = new OkHttpClient(); 

     HttpUrl url = HttpUrl.parse(urlString).newBuilder() 
       .addQueryParameter("j_username", username) 
       .addQueryParameter("j_password", password) 
       .build(); 
     Request request = new Request.Builder() 
       .url(url) 
       .build(); 

     try { 
      Response response = client.newCall(request).execute(); 
      System.out.println(response.body().string()); 

     } catch (IOException e){ 
      e.printStackTrace(); 
     } 

です応答はログインページのソースコードです。

<form data-ajax="false" id="LoginForm" name="lForm" method="POST" action="j_security_check" autocomplete="off"> 
<p></p> 
<b>CU Login Name:</b><br> <input tabindex="1" type="text" name="j_username" size="20" data-theme="c" /> 
<p></p> 
<b>IdentiKey Password:</b><br> <input tabindex="2" type="password" name="j_password" size="20" data-theme="c" /> 
<p></p> 
<button data-ajax="false" data-theme="a" value="Log in" tabindex="3">Login</button> 
<p></p> 

「 任意の考え?

私は個人的にはセッションとクッキーであるべきであるが、私はOKHTTP

+0

ブラウザでhttps://m.colorado.edu/mycuinfo/j_security_check?j_username=**&j_password=***を試しました。しかし、私はOKHTTPを使用すると、同じ結果。 – jamiez

答えて

1

と私はあなたがクエリがパラメータ渡しPOST要求を実行しようとすべきであると思ういけないことをやるのか分からないと思います。 GETリクエストには通常 QueryParametersが使用されます。このように、RequestBodyを構築し、それを要求を実行するようにしてください:

RequestBody formBody = new FormEncodingBuilder() 
    .add("j_username", username) 
    .add("j_password", password) 
    .build(); 
Request request = new Request.Builder() 
    .url(urlString) 
    .post(formBody) 
    .build(); 

Response response = client.newCall(request).execute(); 
+0

私は 'FormEncodingBuilder'は廃止予定で、FormBody.Builder()に変更したと思います。しかし、それは動作しません....それはセッションやクッキーについてですか? – jamiez

0

はラファエル・カルドーゾさんのコメントに追加するには、あなた間違いなくそれはセキュリティ上のリスクと考えられているのユーザーをログに記録するクエリパラメータを使用してはならない。 。安全な接続を介してRequestBodyを使用することが望ましいです。

関連する問題