Hiện kết quả từ 1 tới 1 của 1

Chủ đề: call asp.net web service from android


  1. #1
    Thành Viên Mới Avatar của longtqdayma
    Tham gia
    Aug 2015
    Bài gửi
    1

    call asp.net web service from android

    Mình đang làm một ứng dụng android cần triệu gọi một Web service.
    Web service mình viết bằng .Net (C#)


    Web service của mình hoạt động bình thường. không có lỗi.
    Nhưng khi mình gọi từ ứng dụng android không được báo lỗi sau.

    SoapFault - faultcode: 'soap:Client' faultstring: 'System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction:http://tempuri.org/Save .
    at System.Web.Services.Protocols.Soap11ServerProtocol Helper.RouteRequest()
    at System.Web.Services.Protocols.SoapServerProtocol.R outeRequest(SoapServerMessage message)
    at System.Web.Services.Protocols.SoapServerProtocol.I nitialize()
    at System.Web.Services.Protocols.ServerProtocolFactor y.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)' faultactor: 'null' detail: org.kxml2.kdom.Node@b3ebcbc8

    Code android and Web Service
    Mã:
    public class CallSoap {
    
    
        public final String SOAP_ACTION = "http://tempuri.org/Save";    
        public final String OPERATION_NAME = "Save";
        public final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";
        public final String SOAP_ADDRESS = "http://10.1.3.155/TaiKhoan/TaikhoanService.asmx";
    
    
        public CallSoap() {
        }
    public String Call(String number, String content, String ngay) {
            Object response = null;
            try {
                SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
                        OPERATION_NAME);
                // So gui den
                PropertyInfo pi = new PropertyInfo();
                pi.setName("number");
                pi.setValue(number);
                pi.setType(String.class);
                request.addProperty(pi);
                // Noi dung
                pi = new PropertyInfo();
                pi.setName("content");
                pi.setValue(content);
                pi.setType(String.class);
                request.addProperty(pi);
                // Ngay gui
                pi = new PropertyInfo();
                pi.setName("ngay");
                pi.setValue(ngay);
                pi.setType(String.class);
                request.addProperty(pi);
    
    
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                        SoapEnvelope.VER11);
                envelope.dotNet = true;
                // MarshalDate md = new MarshalDate();
                // md.register(envelope);
                envelope.setOutputSoapObject(request);
    
    
                HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
    
    
                httpTransport.call(SOAP_ACTION, envelope);
                response = envelope.getResponse();
            } catch (Exception exception) {
                response = "Fail";
                // response = exception.toString();
            }
            return response.toString();
        }
    
        
    }
    
    public class SmsReceiver extends WakefulBroadcastReceiver {
    
    
        private SmsDataHelper db = null;
        private Context context = null;
    
    
        @Override
        public void onReceive(Context context, Intent intent) {
            if (BuildConfig.DEBUG)
                Log.v("SMSReceiver: onReceive()");
            this.context = context;
            // Phân tách tin nhắn
            Bundle bundle = intent.getExtras();
            SmsMessage[] msgs = null;
    
    
            String number = "";
            String content = "";
            if (bundle != null) {
                Object[] pdus = (Object[]) bundle.get("pdus");
                msgs = new SmsMessage[pdus.length];
                for (int i = 0; i < msgs.length; i++) {
                    msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                    number = msgs[i].getOriginatingAddress();
                    content = msgs[i].getMessageBody().toString();
                    
                }
                AsyncCallWS ws = new AsyncCallWS();
                ws.execute(number, content);
            }
            
        }
    
    
        private class AsyncCallWS extends AsyncTask<String, Void, Void> {
    
    
            @Override
            protected Void doInBackground(String... arg0) {
                String result = "";
                List<SmsData> rs = getSmsNotSend();
                try {
                    SimpleDateFormat formatter = new SimpleDateFormat(
                            "dd/MM/yyyy h:mm a");
                    CallSoap soap = new CallSoap();
                
                    result = soap.Call(arg0[0], arg0[1],
                            formatter.format(new Date()));
                } catch (Exception exception) {
                }
                return null;
            }
    
    
        }
    
    
            [WebMethod]    public string Save(string number, string content, string ngay)
        {
            string result = "Success";
            DateTime ngaysms = Convert.ToDateTime(ngay);
            //Code
            return  result ;
        }
    mình thử đổi SoapEnvelope.VER11 thành SoapEnvelope.VER12 cũng không được
    Service của mình truy cập trên chính thiết bị android test chạy được.
    Kết quả khi chạy service trên trình duyệt "<string xmlns="http://tempuri.org/Save">Success</string>"
    Bác nào có kinh nghiệm xin chỉ giúp
    Thank

    Chủ đề tương tự:

    Lần sửa cuối bởi longtqdayma; 10-08-15 lúc 07:26 PM

Tags for this Thread

Đánh dấu

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •