mod_gsoap 修改过程
1. 使用.Net 2003通过原有的mod_gsoap.vcproj生成*.sln
2. 使用vc726将.vcproj转换成.dsp
3. 下载apache httpd win source package
4. 解压后,将mod_gsoap的文件拷入到modules\gsoap中
5. 向apache.dsw中添加mod_gsoap.dsp
6. 修改apache中的相关项目,去掉Generate debug info
7. **根据相似的其他mod修改mod_gsoap工程,要仔细检查所有项
8. 添加依赖工程libapr, libaprutil, libhttpd
9. 修改gsoap_handler中的一个错处:C,因此要在函数开始时声明变量。
10.向BuildBin中添加所有的mod_*
12.修改os\win32\BaseAddr.ref添加
+ mod_gsoap.so 0x6FFA0000 0x00010000
libhttpd.dll 0x6FF00000 0x000A0000
13.mod_deflate下载zlib到srclib\zlib并根据zlib中的工程修改mod_deflate中的zlib包含的文件,mod_deflate.dep改名字,新建一个空的mod_deflate.dep
14.下载http://sourceforge.net/nasm,根据ssl中的指示编译ssl
15.下载http://sourceforge.net/gnuwin中的bison, flex and gawk
16.修改mod_gsoap.c中的frecv
+ nRet = ap_get_client_block(r, pBuf, len > r->remaining ? (apr_size_t)r->remaining : len);
- nRet = ap_get_client_block(r, pBuf, len > r->remaining ? r->remaining : len);
17.配置http.conf
LoadModule gsoap_module modules/mod_gsoap.so
<IfModule mod_gsoap.c>
<Location /soap>
SetHandler gsoap-handler
SOAPLibrary gsoap\calc.dll
</Location>
</IfModule>
18.注意:for apache2的mod_gsoap,当直接使用浏览器时,会发生404错误,并且不像for apache1的那样提示相关信息。
因此要想测试,可以直接使用程序发送POST消息。如使用下面的python程序
import httplib, urllib, mimetools, time
body = """<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns="calc">
<SOAP-ENV:Body id="_0">
<add xmlns="calc">
<a>10</a>
<b>20</b>
</add>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
"""
headers = {"Content-type": "text/xml:"}
conn = httplib.HTTPConnection("WY", "8000")
conn.request("POST", "/soap", body, headers)
response = conn.getresponse()
print response.status, response.reason
print response.msg
data = response.read()
print data
conn.close()
如果你不想自己编译,在
http://gsoapwzd.cosoft.org.cn/gsoapwzd/mod_gsoap/mod_gsoap.so
http://gsoapwzd.cosoft.org.cn/gsoapwzd/mod_gsoap/mod_calc.dll
http://gsoapwzd.cosoft.org.cn/gsoapwzd/mod_gsoap/add 2 httpd.conf
http://gsoapwzd.cosoft.org.cn/gsoapwzd/mod_gsoap/calc.h
下载。