『壹』 java運行底下有at英文什麼意思
是版本問題,jdk版本的問題。
Calculator類初始化的時候有問題,你可能是在初始化調用了本身造成了遞歸,看看你程序的調用順序是不是在Calculator的初始化方法或者構造方法里間接或直接的調用了本身。
錯誤的原因,是因為我們使用高版本的jdk編譯的java。
『貳』 誰有關於JAVA串口的AT指令的操作程序,發簡訊的......謝謝 謝謝
沒分啊 -.-
設置格式
AT+CMGF=1
OK
AT+CMGS...... 發簡訊
『叄』 關於Java中的JavaMail問題
給你個例子吧
/**
* @author EX-QINCIDONG001
* 驗證
*/
public class MailAuthorization extends Authenticator {
private String username;
private String password;
public MailAuthorization(String username,String password) {
this.username = username;
this.password = password;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// TODO Auto-generated method stub
return new PasswordAuthentication(username,password);
}
}
public class MailInfo {
// 伺服器地址
private String hostName;
// 埠
private String hostPort;
// 用戶名
private String userName;
private String password;
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
// 是否需要驗證
private boolean validate = false;
// 發件人
private String sender;
// 收件人
private String[] recvers = {};
// 抄送給哪些人
private String[] ccs = {};
// 郵件主題
private String subject;
// 郵件內容
private String content;
// 附件
private List<File> attaches;
public String getHostName() {
return this.hostName;
}
public void setHostName(String hostName) {
this.hostName = hostName;
}
public String getHostPort() {
return this.hostPort;
}
public void setHostPort(String hostPort) {
this.hostPort = hostPort;
}
public boolean isValidate() {
return this.validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String getSender() {
return this.sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public String[] getRecvers() {
return this.recvers;
}
public void setRecvers(String[] recvers) {
this.recvers = recvers;
}
public String[] getCcs() {
return this.ccs;
}
public void setCcs(String[] ccs) {
this.ccs = ccs;
}
public String getSubject() {
return this.subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return this.content;
}
public void setContent(String content) {
this.content = content;
}
public List<File> getAttaches() {
return this.attaches;
}
public void setAttaches(List<File> attaches) {
this.attaches = attaches;
}
}
public class MailSender {
private MailInfo mailInfo;
public MailSender(MailInfo mailInfo) {
this.mailInfo = mailInfo;
}
// 發送郵件方法
public void sendMail() throws MessagingException {
Properties props = System.getProperties();
props.setProperty("mail.transport.protocol", "smtp"); // smtp協議
props.put("mail.smtp.host", mailInfo.getHostName());
props.put("mail.smtp.port", mailInfo.getHostPort());
props.put("mail.smtp.auth", mailInfo.isValidate()?"true":"false");
Authenticator authenticator = new MailAuthorization(mailInfo.getUserName(),mailInfo.getPassword());
Session session = Session.getDefaultInstance(props, authenticator);
MimeMessage msg = new MimeMessage(session);
msg.setSubject(mailInfo.getSubject(), "utf-8");
Address address = new InternetAddress(mailInfo.getSender());
msg.setFrom(address);
// 收信人
Address[] recvs = new Address[mailInfo.getRecvers().length];
int index = 0;
if (mailInfo.getRecvers() != null) {
for (String s : mailInfo.getRecvers()) {
Address addr = new InternetAddress(s);
recvs[index] = addr;
index++;
}
}
msg.setRecipients(RecipientType.TO,recvs);
index = 0;
// 抄送
Address[] ccs = new Address[mailInfo.getCcs().length];
if (mailInfo.getCcs() != null) {
for (String s:mailInfo.getCcs()) {
Address addr = new InternetAddress(s);
ccs[index] = addr;
index++;
}
}
msg.setRecipients(RecipientType.CC, ccs);
Multipart mp = new MimeMultipart();
BodyPart part = new MimeBodyPart();
part.setContent(mailInfo.getContent(), "text/html;charset=utf-8");
// 增加附件
if (mailInfo.getAttaches() != null && mailInfo.getAttaches().size() > 0) { // 有附件
for (int i=0;i<mailInfo.getAttaches().size();i++) {
BodyPart bp = new MimeBodyPart();
FileDataSource fds = new FileDataSource((File) mailInfo.getAttaches().get(i));
bp.setDataHandler(new DataHandler(fds));
mp.addBodyPart(bp);
}
}
mp.addBodyPart(part);
msg.setContent(mp);
// Transport transport = session.getTransport();
Transport.send(msg);
}
}
public class TestMailSender {
/**
* @param args
*/
public static void main(String[] args) {
MailInfo mi = new MailInfo();
mi.setValidate(true);
mi.setUserName("[email protected]");
mi.setPassword("*******");
mi.setSubject("測試郵件發送");
mi.setSender("[email protected]");
mi.setRecvers(new String[]{"[email protected]","[email protected]"});
mi.setHostPort("25");
mi.setHostName("smtp.163.com");
mi.setContent("<a href='www..com'>網路</a>網路知道");
// 添加附件
List<File> attaches = new ArrayList<File>();
attaches.add(new File("D:\\qincidong\\資料\\Ejb\\EJB3.0入門經典-weblogic.pdf"));
attaches.add(new File("D:\\qincidong\\資料\\Ejb\\編寫第一個EJB應用程序.doc"));
mi.setAttaches(attaches);
MailSender sender = new MailSender(mi);
try {
sender.sendMail();
System.out.println("郵件發送成功。");
} catch (MessagingException e) {
System.err.println("郵件發送失敗");
e.printStackTrace();
}
}
}
『肆』 java 如何發送簡訊
JAVA發送手機簡訊,流傳有幾種方法:(1)使用webservice介面發送手機簡訊,這個可以使用sina提供的webservice進行發送,但是需要進行注冊;(2)使用簡訊mao的方式進行簡訊的發送,這種方式應該是比較的常用,前提是需要購買硬體設備,呵呵(3)使用中國網建提供的SMS簡訊平台
JAVA調用
import java.io.UnsupportedEncodingException;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
public class SendMsg_webchinese {
public static void main(String[] args)throws Exception
{
HttpClient client = new HttpClient();
PostMethod post = new PostMethod("http://gbk.sms.webchinese.cn");
post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在頭文件中設置轉碼
NameValuePair[] data ={ new NameValuePair("Uid", "本站用戶名"),new NameValuePair("Key", "介面安全密碼"),new NameValuePair("smsMob","手機號碼"),new NameValuePair("smsText","簡訊內容")};
post.setRequestBody(data);
client.executeMethod(post);
Header[] headers = post.getResponseHeaders();
int statusCode = post.getStatusCode();
System.out.println("statusCode:"+statusCode);
for(Header h : headers)
{
System.out.println(h.toString());
}
String result = new String(post.getResponseBodyAsString().getBytes("gbk"));
System.out.println(result);
post.releaseConnection();
}
}
jar包下載
commons-logging-1.1.1.jar
commons-httpclient-3.1.jar
commons-codec-1.4.jar
『伍』 java web應用啟動報錯
ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
從網上找了下資料,綜合一下原因分析:
這是web容器生成的servlet代碼中有out.write(」」),這個和JSP中調用的response.getOutputStream()產生沖突.
即Servlet規范說明,不能既調用 response.getOutputStream(),又調用response.getWriter(),無論先調用哪一個,在調用第二個時候應會拋出 IllegalStateException,因為在jsp中,out變數是通過response.getWriter得到的,在程序中既用了response.getOutputStream,又用了out變數,故出現以上錯誤。
解決方案:
1.在程序中添加:
out.clear();
out = pageContext.pushBody();
就可以了;
2,不要在%〕〔%之間寫內容包括空格和換行符
3,在頁面寫入圖片的時候,需要flush()
OutputStream output=response.getOutputStream();
output.flush();
4,在頁面確定寫入<meta http-equiv=」Content-Type」 content=」text/html; charset=gb2312」>
『陸』 中國移動簡訊介面java怎麼調用
java調用運營商的介面參考:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>
<%
String PostData = "sname=kwsm&spwd=kwsm&scorpid=&sprdid=101&sdst=13910862579&smsg="+java.net.URLEncoder.encode("簡訊內容","utf-8");
//out.println(PostData);
String ret = cn.umob.sms.Send.SMS(PostData, "http://10.1.120.22/SmsMmsWebService/Service.asmx/g_Submit");
out.println(ret);
//請自己反序列化返回的字元串並實現自己的邏輯
%>
</h1>
</body>
</html>
『柒』 java的有異常不懂
這是空指針錯啊....你引用了值為null值的對像......
在你的SumPeople.java這個類的51行...初始化的時候出的...你好好找下是不是傳入了一個空對像
『捌』 win7下java調用sms介面出現亂碼
說到底,就是編碼不對應。把兩邊的編碼調到統一的
『玖』 java怎麼同步發送及非同步發送簡訊例子解析
發送簡訊的介面
根據自己的情況選擇服務商。
開發文檔
從開發文檔中我們可以看到. 可以直接使用http請求也可以使用WebService請求發送簡訊. 由於DEMO文件夾下的java和jsp文件夾中的代碼都是使用http請求發送簡訊. 所以這里就不再細說了, 我們使用WebService的方式演示發送簡訊.
生成客戶端代碼
從介面文檔中我們知道它的WebService的WSDL的url為:http://106.ihuyi.cn/webservice/sms.php?WSDL那麼我們可以執行下面的命令生成客戶端代碼:
wsimport -keep http://106.ihuyi.cn/webservice/sms.php?WSDL
其中wsimport是JDK自帶的工具, -keep url選項是"保留生成的文件". 該命令會在當前目錄下生成sms.cn.ihuyi._106包, 以及眾多的類. 接下來開始編寫我們自己的代碼.
定義介面
為了方便, 這里我們首先定義一個介面:
Sms.java
publicinterfaceSms{
/**
*向mobile發送簡訊,內容為message
*
*@parammobile手機號
*@parammessage簡訊內容
*@return成功返回-1,否則返回其他值
*/
intsendMessage(Stringmobile,Stringmessage);
}
這個介面很簡單, 只有一個方法. 這個方法用來發送簡訊.
同步發送簡訊
接下來我們首先實現一個同步發送簡訊的類:
IhuyiSmsImpl.java
{
privateStringaccount;
privateStringpassword;
publicvoidsetAccount(Stringaccount){
this.account=account;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
@Override
publicintsendMessage(Stringmobile,Stringmessage){
cn.ihuyi._106.Smsfactory=newcn.ihuyi._106.Sms();
SmsSoapsmsSoap=factory.getSmsSoap();
SubmitResultsubmit=smsSoap.submit(account,password,mobile,message);
intcode=submit.getCode();
if(code==2){
return-1;
}
System.out.println("發送簡訊失敗,code:"+code);
returncode;
}
}
非同步發送簡訊
由於發送簡訊涉及到網路通信, 因此sendMessage方法可能會有一些延遲. 為了改善用戶體驗, 我們可以使用非同步發送簡訊的方法. 原理很簡單: 如果用戶請求發送簡訊, 我們不是直接調用IhuyiSmsImpl的sendMessage方法, 而是將請求保存起來(生產者), 然後告訴用戶: 簡訊發送成功. 之後有若干個消費者取出任務, 調用sendMessage方法發送簡訊.
這里, 我使用線程池完成上面的任務:
AsyncSmsImpl.java
{
publicSmssendSms;
=Executors.newFixedThreadPool(3);
publicvoidsetSendSms(SmssendSms){
this.sendSms=sendSms;
}
@Override
publicintsendMessage(Stringmobile,Stringmessage){
try{
executorService.submit(()->sendSms.sendMessage(mobile,message));
}
catch(Exceptione){
Sysemt.out.println("提交任務時發生錯誤"+e);
return0;
}
return-1;
}
publicvoiddestroy(){
try{
executorService.shutdown();
}
catch(Exceptione){}
}
}
在第17行, 我們獲得遠程對象的一個代理對象. 之後就可以通過這個代理對象進行發送簡訊, 查詢賬戶余額等操作.
第18行, 使用該代理對象的submit方法提交了簡訊內容. 該方法的參數信息及返回值含義在介面文檔中有詳細的說明.
第19行我們獲得了結果的狀態碼. 根據文檔上的說明, 狀態碼為2說明提交成功. 簡單起見, 這里我們只關注提交成功的情況. 需要注意的是, 狀態碼為2隻是說明提交成功. 根據官網上的"3-5秒內響應、100%到達", 我們可以推測. 如果提交成功, 那麼基本上3-5秒內,簡訊就會發送成功, 根據用戶的網路情況, 可能稍有延遲用戶就可以收到簡訊.
使用這段代碼發送簡訊也很簡單, 直接new一個對象, 設置好賬號和密碼就可以發送簡訊了.
代碼很簡單, 直接將Sms介面的sendMessage(mobile, message)方法作為一個任務加到線程池的任務隊列中. 這樣等到有空閑線程時, 就會執行sendSms.sendMessage(mobile, message)發送簡訊. 這里我們假設只要保存到線程池就可以成功發送簡訊. 因為發送失敗的情況實際上很罕見.