📄 cwappostexample.java
字号:
/**
* JWAP - A Java Implementation of the WAP Protocols
* Copyright (C) 2001-2004 Niko Bender
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package net.sourceforge.jwap.examples;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Vector;
import net.sourceforge.jwap.wsp.CWSPMethodManager;
import net.sourceforge.jwap.wsp.CWSPSession;
import net.sourceforge.jwap.wsp.IWSPUpperLayer;
/**
* This class is used to send (POST) data via a WAP Gateway.
*/
public class CWapPostExample implements IWSPUpperLayer {
// the URL of the WAP-Gateway and its port.
private InetAddress wapgw;
private int wapgwport;
// the URI of the server to post to
private String posturi;
// the bytes to be posted
private byte[] bytes;
private String contentType;
// holds the WAP session we open to send the message (from connect till disconnect)
private CWSPSession s;
// holds the Method transaction for posting (from m_send_req till m_send_conf)
private CWSPMethodManager m;
/**
* Constructs a WAP sender object.
*
* @param wapgw the wap gateway to use
* @param wapgwport the port of the wap gateway
*/
public CWapPostExample(InetAddress wapgw, int wapgwport, String posturi,
byte[] dataToSend, String contentType) {
this.bytes = dataToSend;
this.posturi = posturi;
this.wapgw = wapgw;
this.wapgwport = wapgwport;
this.contentType = contentType;
init();
}
/**
* It automatically connects to the WAP gateway.
* After the connect.conf it sends the WAP POST.
* After all it disconnects from the gateway.
*
* @param args none (ignored)
*/
public static void main(String args) {
try {
CWapPostExample poster = new CWapPostExample(InetAddress.getByName(
"IpAddressOfYourWapGateway"), 9201,
"http://IpOfYourMMSC",
"This data should represent a correctly encoded Multimedia Message according to MMSE".getBytes(),
"application/vnd.wap.mms-message");
} catch (UnknownHostException ex) {
ex.printStackTrace();
}
}
/**
* This method connects to the wap gateway and opens a WSP session.
*/
private void init() {
try {
s = new CWSPSession(wapgw, wapgwport, this);
System.out.println("connecting to WAP gateway " + wapgw);
s.s_connect();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Implementation of IWSPUpperLayer.
* Is called by the WAP stack after being connected.
* We then send the Message in a POST.
*/
public void s_connect_cnf() {
try {
System.out.println("connected to WAP gateway " + wapgw);
System.out.println("sending data (WSP POST)");
m = s.s_post(bytes, contentType, posturi);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Implementation of IWSPUpperLayer.
* this method is called by the wap stack after a response of a method is received.
* @param payload the payload from the response
* @param contentType the content type of the response
* @param moreData will there come more data belonging to this result?
*/
public void s_methodResult_ind(byte[] payload, String contentType,
boolean moreData) {
// decode the response here...
String nl = System.getProperty("line.separator");
System.out.println("Response Content Type: " + contentType + nl +
payload.toString());
System.out.println("disconnecting from WAP gateway " + wapgw);
m.s_methodResult(null);
s.s_disconnect();
}
/**
* Implementation of IWSPUpperLayer. NOT USED.
* @param reason
*/
public void s_suspend_ind(short reason) {
}
/**
* Implementation of IWSPUpperLayer. NOT USED.
*/
public void s_resume_cnf() {
}
/**
* Implementation of IWSPUpperLayer.
* Called by the WAP stack if we are disconnected.
* @param reason the reason, why we are disconnected
*/
public void s_disconnect_ind(short reason) {
System.out.println("disconnected from WAP gateway " + wapgw);
}
/**
* Implementation of IWSPUpperLayer. NOT USED.
* if we receive a redirect from the server.
* @param redirectInfo
*/
public void s_disconnect_ind(Vector redirectInfo) {
System.out.println("disconnecting from WAP gateway " + wapgw);
this.m.s_methodResult(null);
s.s_disconnect();
}
public void s_disconnect_ind(InetAddress[] redirectInfo) {
System.out.println("---redirected to " + redirectInfo.toString());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -