คือเพื่อนผมทำ API สำหรับ Authentication ไว้ให้แล้วครับ โดยมีรายละเอียดดังนี้
Authorization : Basic base64(:)
Content-Type : application/x-www-form-urlencoded
Http Parameters มี grant_type=password username= password=
และผมได้ลองทำการ Authen ใน Project Java ดูก่อนตาม Code นี้ก็สามารถได้ Access Token กลับมา
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
String base64EncodedCredentials = “basic dGVzdGNsaWVudDp0ZXN0cGFzcw==”;
URL url = new URL(“http://localhost/api/token”);
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod(“POST”);
httpCon.setRequestProperty(“Authorization”, base64EncodedCredentials);
httpCon.setRequestProperty(“Content-Type”,”application/x-www-form-urlencoded” );
String data = (“grant_type=password&username”)
+ “=” +”test”;
data += “&” +”password”+ “=”+”1234”;
OutputStreamWriter out = new OutputStreamWriter(
httpCon.getOutputStream());
out.write(data);
out.flush();
System.out.println(httpCon.getResponseCode());
System.out.println(httpCon.getResponseMessage());
System.out.println(data);
out.close();
String text = new String(“”);
BufferedReader reader=null;
reader = new BufferedReader(new InputStreamReader(httpCon.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while((line = reader.readLine()) != null)
{
// Append server response in string
sb.append(line + “n”);
}
text = sb.toString();
reader.close();
// Show response on activity
// content.setText( text );
// return text;
System.out.println(text);
}
}
แต่ทีนี้พอก๊อบ Codeนี้มาใน Project Android มันกลับ Error ก็ไปหาในเนตเขาบอกว่าให้ใช้ Asynctask ทีนี้ผมลองหาตัวอย่าง AsyncTask หลายแหล่งมาลองแล้ว ปรากฎว่าไม่ออก มืดแปดด้านแล้วครับ รบกวนผู้รู้อธิบายทีครับผม ขอบคุณครับ
ผมอธิบายไม่ค่อยเก่งนะ เอาแบบทำงานได้ ละกัน
ที่ผมเข้าใจถามเราจะ Call HttpURLConnection อะไรพวกนี้ มันต้องทำอยู่ใน Thread ครับ
คือให้เราสร้าง
มี 2 แบบ
1.
class xxx extend Thread{
run{
เอามาใส่ตรงนี้ นะ
}
}
2.
private class LongOperation extends AsyncTask {
@Override
protected String doInBackground(String… params) {
เอามาใส่ตรงนี้ นะ
}
@Override
protected void onPostExecute(String result) {
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void… values) {}
}
อาจ งง ถ้างงลองอ่านการใช้งาน Thread , AsyncTask นะ