socket发送字符串时怎么自定义编码格式 50
项目搭建在在服务器上,是与银行的一个交换。规定由我方发起socket请求,发送请求报文(xml格式,utf-8编码),银行应答后发送对账文件(字符串,gbk编码)。最近银...
项目搭建在在服务器上,是与银行的一个交换。规定由我方发起socket请求,发送请求报文(xml格式,utf-8编码),银行应答后发送对账文件(字符串,gbk编码)。最近银行反馈我方发送的字符串也是utf-8编码,导致处理报错,求大神解答!
// 获取socket输入输出流,阻塞通信
InputStream is = null;
Writer writer = null;
try{
writer = new OutputStreamWriter(socket.getOutputStream(),"GBK");
is = socket.getInputStream();
}catch (IOException e1){
e1.printStackTrace();
}
// 组装发送核心的请求信息
buildMessage = CenterControll.getImplementOfRequest(requestType);
message = buildMessage.build(replyMessage, fileName, fileType, begainIndex, fileLen, endIndex, dataPackage, path,privateKey);
settleLogger.settlePrintData("发送的报文"+message);
System.out.println("请求:"+message);
if (message.equals("stop")){
continueCommunicate = false;
break;
}
writer.write(message);
if(message.indexOf("X1.0")==0){
if(0 != requestType.indexOf("send")){
writer.write("0000");
}
}
writer.flush(); 展开
// 获取socket输入输出流,阻塞通信
InputStream is = null;
Writer writer = null;
try{
writer = new OutputStreamWriter(socket.getOutputStream(),"GBK");
is = socket.getInputStream();
}catch (IOException e1){
e1.printStackTrace();
}
// 组装发送核心的请求信息
buildMessage = CenterControll.getImplementOfRequest(requestType);
message = buildMessage.build(replyMessage, fileName, fileType, begainIndex, fileLen, endIndex, dataPackage, path,privateKey);
settleLogger.settlePrintData("发送的报文"+message);
System.out.println("请求:"+message);
if (message.equals("stop")){
continueCommunicate = false;
break;
}
writer.write(message);
if(message.indexOf("X1.0")==0){
if(0 != requestType.indexOf("send")){
writer.write("0000");
}
}
writer.flush(); 展开
2个回答
展开全部
SOCKET 一般是怎么传输 UNICODE 字符串的
首先先大概介绍一下向导生成的代码:
程序的进入点是全局函数_tWinMain, 仔细看一下这个函数,会发现当运行程序时,可以加上参数,例如: ServiceDemo /RegServer 或者 ServiceDemo -RegServer,这个是用来本地服务器注册(Register as Local S Register as Service erver); ServiceDemo / Service 或者 ServiceDemo -Service,这个是服务的注册(Register as Service);ServiceDemo /UnRegServer 或者 ServiceDemo -UnRegServer ,这个是服务的删除。所以,当写好了服务程序,只要运行的时候加上参数 Service ,这个时候在SCM中就会看到我们的服务了。可以试一下在SCM中对这个什么也不做的服务"启动","停止",改变一下它的启动方式。
首先先大概介绍一下向导生成的代码:
程序的进入点是全局函数_tWinMain, 仔细看一下这个函数,会发现当运行程序时,可以加上参数,例如: ServiceDemo /RegServer 或者 ServiceDemo -RegServer,这个是用来本地服务器注册(Register as Local S Register as Service erver); ServiceDemo / Service 或者 ServiceDemo -Service,这个是服务的注册(Register as Service);ServiceDemo /UnRegServer 或者 ServiceDemo -UnRegServer ,这个是服务的删除。所以,当写好了服务程序,只要运行的时候加上参数 Service ,这个时候在SCM中就会看到我们的服务了。可以试一下在SCM中对这个什么也不做的服务"启动","停止",改变一下它的启动方式。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询