本周任务(安卓上调用gsoap服务器——使用的是ksoap, 数据库的C语言调用)
2013-12-11 14:52
381 查看
继续上周未完成的工作,1:后台程序的设计,不使用共享内存,改用数据库来实现。2:WEB的客户端的设计——安卓上的基于ksoap的开发,调用gsoap写的service;
针对2,在网上找了很多例子,终于发现一篇用很大帮助的http://www.eoeandroid.com/thread-312322-1-1.html,根据这篇,我照着做出现了些问题,现记录如下:
1.socket failed:EACCES(Permission denied)——解决:http://stackoverflow.com/questions/11273197/socket-failed-eacces-permission-denied
2.HTTP request failed,HTTP status:400——解决:http://stackoverflow.com/questions/15825943/using-soap-web-services-with-android-4-2
3.HTTP request failed,HTTP status:500——网上搜了一下,出现这个原因有许多种,针对ksoap来说,是版本问题,原来用的是ksoap3.0.0,后来参考这个http://bbs.csdn.net/topics/390455175?page=1#post-395438202,修改了ksoap的版本为2.5.2,解决了这个问题
3.进行上述操作后,服务器端出现这个错误:"Method 'n0:GetSensorPM' not implemented: method name or namespace not recognized"
Detail: [no detail GetSensorPM是我服务器端的接口函数,根据http://www.eoeandroid.com/thread-312322-1-1.html,应该是我的gsoap没有定义版本号导致的
解决——修改gsoap服务器的头文件://gsoap ns service namespace: http://192.168.1.232:9000/SmsWBS?wsdl 改为 //gsoap ns service namespace: urn:SmsWBS,安卓端做相应修改String nameSpace ="http://192.168.1.232:9000/SmsWBS?wsdl"; 改为String nameSpace ="urn:SmsWBS";
4.仍然有错,和服务器返回的参数类型有关,本人对安卓不是很了解,直接删除了//SoapObject detail=(SoapObject)((SoapObject)result).getProperty("GetSensorPMResponse");
这一句,最终可以连接服务器了。
5.rpc.addProperty("contolPm",value);值不能传给服务器,原来第一个参数需要和服务器端的参数名一致
后面的任务就是创建多线程,动态获取服务器的值,这个是案桌上的后续开发,交给别人了……
关于上周的封装类:封装原因——现在的程序时C的,要调用C++中的类中成员,很想用extern C来解决,但是我的成员中有用到模板(T),所以用了编译动态库这个简单的方法;封装的源文件——getConfig.cpp和getConfig.h;按照网上的方法,新建两个文件:pack_getcon.cpp和pack_getcon.h,这两个文件用来调用C++中的类成员,即对外的接口,这些接口用extern C来声明
4个文件准备好后,用指令来生成库:gcc getConfig.cpp pack_getCon.cpp -fPIC -shared -o libgetconfig.so,指令解释:-f后面跟一些编译选项PIC是其中一种,
针对2,在网上找了很多例子,终于发现一篇用很大帮助的http://www.eoeandroid.com/thread-312322-1-1.html,根据这篇,我照着做出现了些问题,现记录如下:
1.socket failed:EACCES(Permission denied)——解决:http://stackoverflow.com/questions/11273197/socket-failed-eacces-permission-denied
2.HTTP request failed,HTTP status:400——解决:http://stackoverflow.com/questions/15825943/using-soap-web-services-with-android-4-2
3.HTTP request failed,HTTP status:500——网上搜了一下,出现这个原因有许多种,针对ksoap来说,是版本问题,原来用的是ksoap3.0.0,后来参考这个http://bbs.csdn.net/topics/390455175?page=1#post-395438202,修改了ksoap的版本为2.5.2,解决了这个问题
3.进行上述操作后,服务器端出现这个错误:"Method 'n0:GetSensorPM' not implemented: method name or namespace not recognized"
Detail: [no detail GetSensorPM是我服务器端的接口函数,根据http://www.eoeandroid.com/thread-312322-1-1.html,应该是我的gsoap没有定义版本号导致的
解决——修改gsoap服务器的头文件://gsoap ns service namespace: http://192.168.1.232:9000/SmsWBS?wsdl 改为 //gsoap ns service namespace: urn:SmsWBS,安卓端做相应修改String nameSpace ="http://192.168.1.232:9000/SmsWBS?wsdl"; 改为String nameSpace ="urn:SmsWBS";
4.仍然有错,和服务器返回的参数类型有关,本人对安卓不是很了解,直接删除了//SoapObject detail=(SoapObject)((SoapObject)result).getProperty("GetSensorPMResponse");
这一句,最终可以连接服务器了。
5.rpc.addProperty("contolPm",value);值不能传给服务器,原来第一个参数需要和服务器端的参数名一致
后面的任务就是创建多线程,动态获取服务器的值,这个是案桌上的后续开发,交给别人了……
关于上周的封装类:封装原因——现在的程序时C的,要调用C++中的类中成员,很想用extern C来解决,但是我的成员中有用到模板(T),所以用了编译动态库这个简单的方法;封装的源文件——getConfig.cpp和getConfig.h;按照网上的方法,新建两个文件:pack_getcon.cpp和pack_getcon.h,这两个文件用来调用C++中的类成员,即对外的接口,这些接口用extern C来声明
4个文件准备好后,用指令来生成库:gcc getConfig.cpp pack_getCon.cpp -fPIC -shared -o libgetconfig.so,指令解释:-f后面跟一些编译选项PIC是其中一种,
表示生成位置无关代码(Position Independent Code),shared表示库共享
如果想用makefile来生成库可以参考这篇http://blog.csdn.net/zy799894671/article/details/7822505。
相关文章推荐
- 安卓客户端连接服务器调用数据库方法
- SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值
- 【Jena使用手册】用Python访问Apache Jena数据库 利用Fuseki搭建HTTP访问服务器
- socketIO服务器,安卓,js端使用代码
- 数据库开发基本操作-使用VS2008服务器资源管理器操作数据库
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- AsyncTask与ProgressDialog使用笔记(安卓在背景运行耗时任务)
- Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
- 使用MDT2013部署Win8系统之五-配置MDT服务器之添加任务序列
- windows下使用开源gSOAP技术调用WebService
- 安卓实现调用系统图库与相机设置头像并保存在本地及服务器
- C语言中的函数调用,栈的使用
- linux 使用crontab添加定时任务,日志显示已经执行但是任务没有成功调用解决方法
- 在使用了母版页的内容页后,如何在javascript中调用服务器控件值
- 安卓客户端使用Json登陆php服务器的简单方法
- 水晶报表使用,解决相同数据库不同服务器使用同一个水晶报表模板问题?
- java 使用JNI调用C语言
- 前段时间,接手一个项目使用的是原始的jdbc作为数据库的访问,发布到服务器上在运行了一段时间之后总是会出现无法访问的情况,登录到服务器,查看tomcat日志发现总是报如下的错误。 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected est
- 如何禁止普通用户使用企业管理器列出服务器上的数据库列表