实现domino server向指定的短信服务器IP地址发短信,已调通!但接收的中文有乱码,即:中文显示为“???”,请大家帮看下,如何解码成中文?非常感谢!import lotus.domino.*;
import java.net.*;
import java.io.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here)
String urlStr="http://172.172.0.1/mobile/smssend/test.jsp?actiontype=SmsSend";
String mobile="13800138000";
String messages="ljh测试短信!";
messages=java.net.URLEncoder.encode(messages);
URL url = new URL(urlStr+"&mobile="+mobile+"&message="+messages);
URLConnection connection = url.openConnection();
connection.connect();
InputStream out = connection.getInputStream();
byte[] bytes = new byte[200];
out.read(bytes);
System.out.println(new String(bytes,"GBK"));
System.out.println("OK!"); } catch(Exception e) {
e.printStackTrace();
}
}
}
import java.net.*;
import java.io.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here)
String urlStr="http://172.172.0.1/mobile/smssend/test.jsp?actiontype=SmsSend";
String mobile="13800138000";
String messages="ljh测试短信!";
messages=java.net.URLEncoder.encode(messages);
URL url = new URL(urlStr+"&mobile="+mobile+"&message="+messages);
URLConnection connection = url.openConnection();
connection.connect();
InputStream out = connection.getInputStream();
byte[] bytes = new byte[200];
out.read(bytes);
System.out.println(new String(bytes,"GBK"));
System.out.println("OK!"); } catch(Exception e) {
e.printStackTrace();
}
}
}
OR
java.net.URLEncoder.encode(messages,"UTF-8");
OR
java.net.URLEncoder.encode(messages,"ISO-8859-1");
out.read(bytes);
System.out.println(new String(bytes,connection.getContentEncoding()));// 用反馈回来的编码,也许不是GBK呢
OR
java.net.URLEncoder.encode(messages,"UTF-8");
OR
java.net.URLEncoder.encode(messages,"ISO-8859-1"); 编译失败:java.net.URLEncoder.encode(messages); //可以通过??
int len = out.read(bytes);
System.out.println(new String(bytes,0,len,connection.getContentEncoding()));// 用反馈回来的编码,也许不是GBK呢用这个编码读取看看。java.net.URLEncoder.encode(messages,"GBK");
需要抛出 UnsupportedEncodingException
,当然你catch到也行
这里编码以及后面解码的时候都指定后试试看。
int len = out.read(bytes);
System.out.println(new String(bytes,0,len,connection.getContentEncoding()));// 用反馈回来的编码,也许不是GBK呢用这个编码读取看看。 java.net.URLEncoder.encode(messages,"GBK");
需要抛出 UnsupportedEncodingException
,当然你catch到也行编译通过,但是执行报一大堆错!!!
但接收的中文有乱码,即:中文显示为“???”,到底是你发出去后,对方接收的是乱码,还是你从那面读取消息,拿到的 byte[] 转为String后是乱码?哈哈!
请帮忙!!我对JAVA很不熟悉!
java.net.URLEncoder.encode(messages,"GBK"); 一定用这个方法编码,GBK改为你的test.jsp接受的编码,也许是utf-8
现在的问题可能就是:java.net.URLEncoder.encode(messages,"GBK"); 如您所说,需要抛出UnsupportedEncodingException,当然catch到也行,
但是Domino Server JDK好象出不去呀,也许是我自己写错了。
您能告诉我怎么写吗?真的很感激您!
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here) String urlStr = "http://172.172.0.1/mobile/smssend/test.jsp?actiontype=SmsSend";
String mobile = "13800138000";
String messages = "ljh测试短信!";
messages = java.net.URLEncoder.encode(messages,"GBK"); // 改这里就可以,GBK,GB2312,UTF-8 逐个试一下
URL url = new URL(urlStr + "&mobile=" + mobile + "&message=" + messages);
URLConnection connection = url.openConnection();
connection.connect();
InputStream out = connection.getInputStream();
byte[] bytes = new byte[200];
out.read(bytes);
System.out.println(new String(bytes, "GBK"));
System.out.println("OK!"); } catch (Exception e) {
e.printStackTrace();
}
}
}
这个程序难道不是你编写的?????
你没有源代码?把最前面的几行贴出来看看
改为:messages = java.net.URLEncoder.encode(messages,"GBK"); 后无法编译,
提示:方法中参数数量错误!需要抛出,请问如何做呢?
谢谢!!!
01/08/2008 18:18:32 HTTP JVM: ????[????13801378537??????ljh222????2!]??????08010818180101/08/2008 18:18:32 HTTP JVM: OK!
01/08/2008 18:18:32 HTTP JVM: Error cleaning up agent threads
01/08/2008 18:27:43 HTTP JVM: ????[????13801378537??????ljh222????2!]??????08010818270101/08/2008 18:27:43 HTTP JVM: OK!
01/08/2008 18:28:17 HTTP JVM: Error loading Agent Class: JavaAgent
01/08/2008 18:28:17 HTTP JVM: java.lang.ClassNotFoundException: JavaAgent
01/08/2008 18:28:17 HTTP JVM: at lotus.domino.AgentLoader.loadClass(Unknown Source)
01/08/2008 18:28:17 HTTP JVM: at java.lang.ClassLoader.loadClass(ClassLoader.java:446)
01/08/2008 18:28:17 HTTP JVM: at lotus.domino.AgentLoader.runAgent(Unknown Source)后台报错信息。
将:messages = java.net.URLEncoder.encode(messages,"GBK");
换:messages=new String(messages.getBytes("GBK"),"ISO-8859-1");
就成功了!感谢大家的支持!尤其是老紫竹!