重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
的确,这个是WebService的应用。学校提供了规范,你根据他的规范传入参数查询就可以了。
站在用户的角度思考问题,与客户深入沟通,找到仙游网站设计与仙游网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都做网站、企业官网、英文网站、手机端网站、网站推广、申请域名、网络空间、企业邮箱。业务覆盖仙游地区。
你可以查下WebService相关的资料,以及编程技巧。我给你提供一个最原始的代码范本,是基于JDK的。非第三方包。其它的以次类推。代码是无参的WebService请求,有参数的,可以自己拼接下。当然现在有很多第三方包,都对访问代码做了封装,你也可以看一下。
思路上:
1、通过服务器的WebService功能接口的访问格式及返回值格式组装HTTP请求。
2、得到返回值,解析出自己要的数据并加以使用。
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
public class WebServiceGetter {
static final String urlString = "";
public static void helloVonProject() throws Exception {
URL url = new URL(urlString);
URLConnection connection = url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection
.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
connection.setRequestProperty("SOAPAction",
"");
connection
.getOutputStream()
.write(("?xml version=\"1.0\" encoding=\"utf-8\"?\n"
+ "soap:Envelope xmlns:xsi=\"\" xmlns:xsd=\"\" xmlns:soap=\"\"\n"
+ " soap:Body\n"
+ " HelloVonProject xmlns=\"\" /\n"
+ " /soap:Body\n" + "/soap:Envelope").getBytes());
InputStream is = connection.getInputStream();
Document document = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse(is);
System.out.println(document
.getElementsByTagName("HelloVonProjectResult").item(0)
.getFirstChild().getNodeValue());
}
public static void main(String[] args) throws Exception {
helloVonProject();
}
}
首先就肯定要知道ServerSocket,服务端的服务端口以及服务器的地址。
然后再用 Socket socket=new Socket(port,address);
最后,如果你需要接收数据之类的,就用socket.getInputStream(),发送数据用socket.getOutputStream()
在主函数中,完成服务器端口的侦听和服务线程的创建。我们利用一个静态字符串变量initDir 来保存服务器线程运行时所在的工作目录。服务器的初始工作目录是由程序运行时用户输入的,缺省为C盘的根目录。
具体的代码如下:
public class ftpServer extends Thread{
private Socket socketClient;
private int counter;
private static String initDir;
public static void main(String[] args){
if(args.length != 0) {
initDir = args[0];
}else{ initDir = "c:";}
int i = 1;
try{
System.out.println("ftp server started!");
//监听21号端口
ServerSocket s = new ServerSocket(21);
for(;;){
//接受客户端请求
Socket incoming = s.accept();
//创建服务线程
new ftpServer(incoming,i).start();
i++;
}
}catch(Exception e){}
}
用Socket类去连接\x0d\x0aStringip="192.168.0.57";\x0d\x0aintport=7000;\x0d\x0aInputStreamin;\x0d\x0aOutputStreamout;\x0d\x0aSocketsock=null;\x0d\x0atry{\x0d\x0asock=newSocket(ip,port);\x0d\x0asock.setSoTimeout(60*1000);//设置超时\x0d\x0athis.in=sock.getInputStream();\x0d\x0athis.out=sock.getOutputStream();\x0d\x0a}catch(Exceptione){\x0d\x0athrownewException("与终端连接失败!");\x0d\x0a}
我的方向有点和你不一样,但是关于socket的一般是差不多的,建议你找找socket流的知识.
Socket内含输入,输出流,只需获取Socket的流对象,就可以对流进行读写操作了。比如,若想向Socket的输出流写数据,只须另一方从自己的Socket的输入流中读取数据即可给你个例子吧,是模拟客户端和服务器端的数据交互.
//客户端import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;
public class MyClent { public static void main(String[] args) { PrintStream ps = null; BufferedReader br = null; BufferedReader message = null; try { Socket scoket = new Socket("127.0.0.1", 1254); ps = new PrintStream(scoket.getOutputStream()); br = new BufferedReader(new InputStreamReader(scoket.getInputStream())); message = new BufferedReader(new InputStreamReader(System.in)); while(true){ ps.println("客户端向服务器发送的数据是:"+message.readLine()); System.out.println(br.readLine()); ps.flush(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
//服务器端import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;
public class MyServer {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub PrintStream ps = null; BufferedReader br = null; BufferedReader message = null; try { ServerSocket server = new ServerSocket(1254); Socket scoket = server.accept();// new Test(scoket); ps = new PrintStream(scoket.getOutputStream()); br = new BufferedReader(new InputStreamReader(scoket.getInputStream())); message = new BufferedReader(new InputStreamReader(System.in)); while(true){ System.out.println(br.readLine()); ps.println("服务器向客户端发送的数据是:"+message.readLine()); ps.flush(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
}/p/font/p
你好。访问Web服务器(例:),需要根据Http协议发送相关请求头,否则Web服务器不会处理。这种处理就类似于你的代码:(line = read.readLine()) != null。当然Web服务器验证的不是这个。
HTTP协议这里不会详解,有需要可以查询相关资料。
在你的代码中加入:
long start = System.currentTimeMillis();
SocketAddress address = new InetSocketAddress(InetAddress.getByName("").getHostAddress(), 80);
Socket socket = new Socket();
socket.connect(address);
System.out.println("连接成功-" + socket.getInetAddress() + " : "
+ (System.currentTimeMillis() - start) + "ms");
/**编写简单HTTP请求头*/
StringBuilder sb = new StringBuilder();
sb.append("GET / HTTP/1.1\r\n")
.append("Host: \r\n")
.append("Connection: Close\r\n\r\n");
OutputStream out = socket.getOutputStream();
out.write(sb.toString().getBytes());
out.flush();
/**发送完成后flush*/
BufferedReader read = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
/**循环等待read接收*/
boolean b = true;
while (b) {
if (read.ready()) {
String line = null;
while ((line = read.readLine()) != null) {
System.out.println(line);
}
b = false;
}
}