error
ฟอรั่มนี้จะถูกปิดการใช้งานเมื่อการย้ายไปฟอรั่มใหม่เสร็จสมบูรณ์

ในระหว่างนี้ กระทู้หรือคอมเมนท์ที่สร้างในระบบเก่าอาจหายได้ในอนาคต เราไปใช้ฟอรั่มใหม่กันเถอะนะนะ

26 replies [Last post]
error
Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

ช่วยแก้errorหน่อยค่ะ พยายามมาหลายวันแล้ว
Could not find class 'org.ksoap2.serialization.SoapObject', referenced from method service.android.Service.ReceiveData

armxy's picture
Offline
Last seen: 2 years 15 weeks ago
Joined: 04/26/2012
Points: 11

add external jar เข้ามารึยังครับ ตัว ksoap2 อ่า
ถ้ายังไงลองเช็คว่า imports ถูกมั้ย

อ่อ อีกอย่าง หลังจาก update SDK เป็น R17 อาจจะต้อง remove jar แล้วค่อยแอดเข้าไปใหม่อีกทีนะครับ
http://stackoverflow.com/questions/9871894/android-couldnt-find-classes-... ลองดูตาม link นี้เลยครับ

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

ของเรา R18ยังไม่ผ่านค่ะ

armxy's picture
Offline
Last seen: 2 years 15 weeks ago
Joined: 04/26/2012
Points: 11

เริ่มทำตอน R18 หรือว่า Version ต่ำกว่า R17 มาก่อน แล้วมา update เป็น R18 ครับ

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

เริ่มใช้R18ตั้งแต่แรกค่ะ

armxy's picture
Offline
Last seen: 2 years 15 weeks ago
Joined: 04/26/2012
Points: 11

เช็ค external jar เรียบร้อยแล้วใช่มั้ยครับ
ใน folder libs มี jar ที่ใช้อยู่แล้วรึยังเอ่ย

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

ค่ะเช็คแล้ว

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

แก้ไงหว่า

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

แก้ได้แล้วค่ะดีใจจังเลย

armxy's picture
Offline
Last seen: 2 years 15 weeks ago
Joined: 04/26/2012
Points: 11

แก้ยังไงเอ่ย?

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

เป็นที่elipseค่ะต้องลงใหม่ค่ะ

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

ปัญหาใหม่ค่ะหลังจากที่รันผ่นแล้ว
แต่มันไม่เข้าtryแต่เข้าcatchแล้วแสดงข้อความว่า" javax.net.ssl.SSLException: Not trusted server certificate "

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

package p6.android;

import android.app.Activity;
import android.os.Bundle;
//import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class p6 extends Activity {

private static final String NAMESPACE = "https://192.168.0.71/hello";
private static final String URL = "https://192.168.0.71/hello/service.asmx";
private static final String SOAP_ACTION = "https://192.168.0.71/hello/HelloWorld";
private static final String METHOD_NAME = "HelloWorld";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText TV = (EditText) findViewById(R.id.data);
TV.setText(ReceiveData());
}
String ReceiveData()
{

SoapObject resultsRequestSOAP = null;
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try
{
androidHttpTransport.call(SOAP_ACTION, envelope);
resultsRequestSOAP = (SoapObject) envelope.getResponse();
return resultsRequestSOAP.toString();
}
catch (Exception e)
{
Toast.makeText(getBaseContext(),e.toString(), Toast.LENGTH_SHORT).show();
return e.toString();
}

}
}

Base's picture
Offline
Last seen: 43 weeks 3 days ago
Joined: 05/11/2011
Points: 129

อ่อ อันนี้ คุณต้อง SSL Certificate Verify ของ https:// ครับ code ข้ามบนมัน call services แบบ http:// ธรรมดา

ขออธิบายนิดนึง ครับ คือว่า SSL มันเป้น โปรโตคอลความปลอดภัย ที่ถูกใช้เป็นมาตรฐาน ในการเพิ่มความปลอดภัย ในการสื่อสารหรือส่งข้อมูลบนเครือข่ายอินเทอร์เน็ต ที่มีการการเข้ารหัสแบบ Public-key encryption เป็นการเข้ารหัสที่มี key 2 ส่วนคือ public key(http://) และ private key (https://) แค่นี้ผมก็ งง แล้ว

เอาเนื้อๆๆ เลยละกันครับ
จากประสบการณ์ ในการเรียกใช้งาน call web services (ทีผมใช้นะ อาจมีวิธีอืนๆๆ อีก)
1. HttpPost คือ post url ทีต้องการเรียกไปตรงๆๆ เลย( เซียนๆๆ เขาทำกัน เพราะว่าเราจะได้ xml มากแบบ เอาง่าย ผมตกใจเลย ว่ามันจะ return อะไรมาเยอาะ อ่านก็ไม่รู้เรื่อง แน่นอนว่า วิธีนี้ผมไม่ทำแน่นอน ) แล้วเราก็มากนั่ง Parser xml เอาเอง ค่อยข้างจะยุ่งยาก พอสมควร **งานเข้าอีกแล้วดิ

2. ksoap2 for android อันนี้ก็เหมือน วิธีการเหมือนคุณทำด้านบน (แต่คุณดัง call service http:// ธรรมดา ไป call https:// งานก็เลยเข้าคุณเลยดิ) และ เพราะว่ามันจะ return ค่าแบบว่าเราเอาไปใช้ได้เลย

อันอย่างนี้ แล้วกันคุณจะได้ เรียนรู้ไปด้วย เดียวผมจะให้ source code วิธีที 1 คุณไป

// การ Call แบบ Https Debug ดูค่าที่มัน return กลับมานะครับ หัดใช้งาน Debug ด้วย
private void callWebServicesHttps(){
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;

DefaultHttpClient client = new DefaultHttpClient();

SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
// registry.register(new Scheme("https", socketFactory, 443));
registry.register(new Scheme("https", new EasySSLSocketFactory(), 443));
SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());

// Set verifier
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);

// Example send http request

final String url = "ใส่ url https:// ตรงนี้นะครับ";
HttpPost httpPost = new HttpPost(url);

try {
HttpResponse response = httpClient.execute(httpPost);

HttpEntity responseEntity = response.getEntity();
Log.e("tag", "msg");
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

Log.e("tag", "msg");
}

ผมไม่กัก นะครับ เพราะคุณจะได้เรียนรู้ไปด้วย

แนะแนวทางแล้วกัน ของวิธีการที่สอง ต้อง เขียน code HostnameVerifier แค่นะครับ ^^

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

ขอบคุณสำหรับคำตอบค่ะ
ขอคำตอบที่ใช้กับเฟรมเวิคด้วยค่ะ
เพราะweb serviceเราใช่soap

Base's picture
Offline
Last seen: 43 weeks 3 days ago
Joined: 05/11/2011
Points: 129

ผมรู้ไงว่าคุณ ใช้ ksoap2 for android ครับ แต่ผมแนะ วิธีการที่หนึง วิธีที่สอง ผม ก็ไกด์ ให้แล้วไง ครับ ลองๆๆ ทำเองก่อน เนอาะ สู้ๆๆ รับรองวิธีการทีสอง ( Call WebService by ksoap2 for Android) ทำได้ แน่นอน ^^

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

ใช่ค่ะ ก็เราไม่รู้วิธีcall httpsไง
แล้ว httpClient รันแล้วมันไม่รู้จัก

Base's picture
Offline
Last seen: 43 weeks 3 days ago
Joined: 05/11/2011
Points: 129

มันหาไม่เจอได้ ไง เพราะว่า httpClient (DefaultHttpClient) มันเป็น library ของ Android เลยนะ

มันอยู่ ใน package org.apache.http.impl.client; หรือว่า คุณ import อะไรมาผิดหรือเปล่า ครับ

ลองๆๆ ใหม่ สู้ต่อ

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

ใช่ค่ะ โดยปกติแล้ว ถ้าlibraryไหนเราไม่มีมันก็จะเตือนให้importอัตโนมัติแต่มันหาไม่เจอจริงๆค่ะ
อีกอย่าง หาclass EasySSLSocketFactory() ไม่เจอ

Base's picture
Offline
Last seen: 43 weeks 3 days ago
Joined: 05/11/2011
Points: 129

??

Base's picture
Offline
Last seen: 43 weeks 3 days ago
Joined: 05/11/2011
Points: 129

ูู^^

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

.

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

..

csxman's picture
Offline
Last seen: 2 years 12 weeks ago
Joined: 03/14/2012
Points: 6

ลองดูลิ้งนี้ก่อนนะครับ

http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-wit...

วิธีแก้ คือ new>foder ขึ้นมาใหม่ใน project ตั้งชื่อว่า libs

หลังจากนั้นให้ copy ตัวไฟล์ของ ksoap2-android-Vertion-X.X.X.jar

ไปไว้ใน โฟเดอร์ชื่อ libs แล้วลองรันโปรเจคดูใหม่ครับ ก็จะผ่าน

เนื่องจากการ Update ของ ADT ตั้งแต่เวอชั่น 17 ขึ้นไป ทำให้ต้องสร้างโฟล์เดอร์ libs เพื่อเก็บ libraries แทน

โปรเจคจะทำการเรียกใช้ ksoap จาก โฟล์เดอร์ libs

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

ค่ะขอบคุณค่ะ

csxman's picture
Offline
Last seen: 2 years 12 weeks ago
Joined: 03/14/2012
Points: 6

รันผ่านรึยังคับ ^^

Offline
Last seen: 1 year 14 weeks ago
Joined: 04/30/2012
Points: 51

ในส่วนของการแก้errorรันผ่านแล้วค่ะเราต้องดัก certificateให้มันค่ะ คุณ Baseเขาแนะนำค่ะ

Navigation
User login
Moderator Team
Contributor
Active forum topics
Recent blog posts
Recent comments
Facebook Fan Page
Who's new
Hits Counter