26 replies [Last post]
error
Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012

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

26 Comments
armxy's picture
Offline
Last seen: 3 years 11 weeks ago
Joined: 04/26/2012
add external jar

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

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

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
ของเรา R18ยังไม่ผ่านค่ะ

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

armxy's picture
Offline
Last seen: 3 years 11 weeks ago
Joined: 04/26/2012
เริ่มทำตอน R18 หรือว่า

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

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
เริ่มใช้R18ตั้งแต่แรกค่ะ

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

armxy's picture
Offline
Last seen: 3 years 11 weeks ago
Joined: 04/26/2012
เช็ค external jar

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

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
ค่ะเช็คแล้ว

ค่ะเช็คแล้ว

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
แก้ไงหว่า

แก้ไงหว่า

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
แก้ได้แล้วค่ะดีใจจังเลย

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

armxy's picture
Offline
Last seen: 3 years 11 weeks ago
Joined: 04/26/2012
แก้ยังไงเอ่ย?

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

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
เป็นที่elipseค่ะต้องลงใหม่ค่ะ

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

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
ปัญหาใหม่ค่ะหลังจากที่รันผ่นแ

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

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
package p6.android; import

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: 1 year 39 weeks ago
Joined: 05/11/2011
อ่อ อันนี้ คุณต้อง SSL

อ่อ อันนี้ คุณต้อง 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: 2 years 10 weeks ago
Joined: 04/30/2012
ขอบคุณสำหรับคำตอบค่ะ ขอคำตอบท

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

Base's picture
Offline
Last seen: 1 year 39 weeks ago
Joined: 05/11/2011
ผมรู้ไงว่าคุณ ใช้ ksoap2 for

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

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
ใช่ค่ะ ก็เราไม่รู้วิธีcall

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

Base's picture
Offline
Last seen: 1 year 39 weeks ago
Joined: 05/11/2011
มันหาไม่เจอได้ ไง เพราะว่า

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

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

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

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
ใช่ค่ะ โดยปกติแล้ว

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

Base's picture
Offline
Last seen: 1 year 39 weeks ago
Joined: 05/11/2011
??

??

Base's picture
Offline
Last seen: 1 year 39 weeks ago
Joined: 05/11/2011
ูู^^

ูู^^

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
.

.

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
..

..

csxman's picture
Offline
Last seen: 3 years 8 weeks ago
Joined: 03/14/2012
ลองดูลิ้งนี้ก่อนนะครับ http:/

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

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: 2 years 10 weeks ago
Joined: 04/30/2012
ค่ะขอบคุณค่ะ

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

csxman's picture
Offline
Last seen: 3 years 8 weeks ago
Joined: 03/14/2012
รันผ่านรึยังคับ ^^

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

Offline
Last seen: 2 years 10 weeks ago
Joined: 04/30/2012
ในส่วนของการแก้errorรันผ่านแล

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

+