คือผมเขียนโปรเจคแล้วติดปัญหาน่ะครับ คือจะเป็นโปรแกรมง่ายโดยการรับค่าคีย์เวิร์ดแล้วไปค้นหาในฐานข้อมูล
โค้ดจะเป็นประมาณนี้น่ะครับ
ผมรับค่าคีย์เวิร์ดเข้ามาสามตัวแล้วส่งไปทำ function doGetdata (นี่แค่โค้ดบางส่วนนะครับ เพราะอันเต็มๆค่อนข้างยาว)
Intent mypage = getIntent();
String objget1 = (String) mypage.getSerializableExtra(“thname”);
String objget2 = (String) mypage.getSerializableExtra(“enname”);
String objget3 = (String) mypage.getSerializableExtra(“desc”);
try {
doGetData(objget1,objget2,objget3);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void doGetData(String objget1,String objget2, String objget3) throws UnsupportedEncodingException {
pd = ProgressDialog.show(this, “”, “Connection loading….”, true);
conn.doGetData(“thname=” + objget1 + “&enname=”+ objget2 +”&desc=”+ objget3);
Toast.makeText(DataDetail.this, objget1, [1] <<<<<<<<
Toast.LENGTH_SHORT).show();
}
มาทำตรงนี้ต่ออีกหน้านึง
public void doGetData(String querystring) throws UnsupportedEncodingException {
this.strQueryString = querystring;
this.strUrl = "http://sit.mfu.ac.th…n/con_xml.php?" + this.strQueryString;
intAction = 1;
new Thread(this).start();
}
แล้วก็มาต่อฟังก์ชั่น doGet
private void doGet() {
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) new URL(strUrl).openConnection();
conn.setConnectTimeout(60000);
conn.setReadTimeout(60000);
conn.setAllowUserInteraction(false);
conn.setInstanceFollowRedirects(true);
conn.setUseCaches(false);
conn.setRequestMethod("GET");
conn.connect();
แล้วรับค่ากลับมา
public void run() {
if (getDataResult != null) {
pd.dismiss();
String strXML = new String(getDataResult);
Toast.makeText(DataDetail.this,strXML, Toast.LENGTH_LONG).show();[2]<<<<<<<<<
finish();
Document doc = XMLfromString(strXML);
แต่มันมีปัญหาเกิดขึ้นตรงนี้แหละครับ
พอผมไปรันในเครื่องจริงแล้ว ถ้าคีย์เวิร์ดเป็นภาษาไทย ตอนที่ผม toast เช็กค่าตรงจุดแรก[1] มันจะยังขึ้นเป็นภาษาไทยอยู่นะครับ
แต่พอตรงtoast เช็กค่าจุดท่าสอง [2] มันจะกลายเป็น ??????? น่ะครับ
จนปัญญาแล้วครับ ขอความช่วยเหลือด้วยครับ T^T
รับส่งข้อมูลเป็น XML หรอครับ ถ้าเรื่อง ??? ผมเข้าใจว่าเป็นเรื่อง Encoding มากกว่านะครับ ไม่ทราบว่าได้ใช้ UTF-8 หรือป่าว แต่ถ้าใช้ JSON ได้ก็ง่ายกว่านะครับ
ส่วนตอนติดต่อกับเซิฟเวอร์แนะนำให้ลองใช้พวกไลบรารีอย่างเช่น OkHttp ดูครับ มันจะช่วยให้จัดการตอนเชื่อมต่อกับเซิฟเวอร์ได้ง่ายและมีประสิทธิภาพกว่าครับ
แอบถามท่านเอก หากส่งเป็น json ต้องสน encoding ไหมครับ
ควรครับ อย่างน้อยก็เซต utf-8 ไว้ใน header หน่อยก็ดีครับ