读书人

怎么接收对方发送的request

发布时间: 2013-04-09 16:45:09 作者: rapoo

如何接收对方发送的request
情况是这样的,现在在开发一个短信提示的项目。短信服务平台由第三方提供,当用户回复短信到该平台的时候,该平台会发送一段XML到我方。
对方提供的java的demo如下
介绍:我方推送过去的xml格式的上行字符串,参照如下
String str="<?xml version='1.0' encoding='GBK'?>" +
"<delivers>" +"<deliver><corp_id>test</corp_id><mobile>13860497631</mobile><ext>2010</ext><time>2010-07-02 00:00:00</time><content>您好tuisong测试222</content></deliver>" +
"</delivers>";
1.通过访问合作方给提供url地址,调用到合作方的接收类,然后我方推送上行信息的xml字符串过去,合作方接收
2.此条xml字符串,是存在requset的内存里
3.需要接收方先取得request对象(注意这里request对象无参数,是直接存在request内存里,需要先从request里获取输入流,然后进行读流操作,读出推送内容)参考如下:
InputStream in = request.getInputStream();
BufferedInputStream buf = new BufferedInputStream(in);
byte[] buffer = new byte[1024];
StringBuffer data =new StringBuffer();
int a ;
while((a = buf.read(buffer))!= -1){
data.append(new String(buffer,0,a,"gbk"));
}
System.out.println(data.toString());



本人在线程里写的读取代码如下:

function TOtherSMS.ReadSMS(var SMSTxt, Phone: string): Boolean;
var
str: TStringList;
i, rCode: Integer;
tXML: TXMLDocument;
tNode, cNode: IXMLNode;
DocIntf : IXMLDocument;
Stream, RStream: TStream;
begin
Result := False;

try
tXML := TXMLDocument.Create(nil);
Stream := TStream.Create;
Stream := HttpSms.Request.Source; //注意,最大的疑问在这里,request接收不到
//HttpSms在之前的代码中这样创建的
// HttpSms:=TIdHTTP.Create(nil);
//HttpSms.ProtocolVersion :=pv1_1;

if not Assigned(Stream) then
begin
Exit;
end;
DocIntf := tXML;
tXML.LoadFromStream(Stream);
tXML.Active := True;
tNode := tXML.DocumentElement.ChildNodes.FindNode('deliver');
/*
xxxxxxxx
*/
finally
DocIntf := nil;
tNode := nil;
FreeAndNil(Stream);
end;
end;
[解决办法]
你需要有一个服务器,有固定IP或域名,然后在服务器上开启HTTP服务
如果用delphi,可以用IIS,然后写ISAPI扩展,接受对方的调用
[解决办法]
intraweb也可以
直接使用应用的创建向导也可以

读书人网 >.NET

热点推荐