作者CMturtle (傑尼龜)
看板java
標題[問題] HTTP POST
時間Tue Jan 25 17:46:52 2011
我想寫一個可以上傳程式碼到online judge的程式
我的想法是,先和伺服器連線後(用socket)
用post指令傳帳號密碼和程式碼上去
我剛把code改了一下,我發現我是要對action的網頁做post
所以現在可以成功登入了,但是卻無法上傳程式碼
他傳回來的訊息是,please login first
這要怎麼處理阿??
import java.net.*;
import java.io.*;
public class Address
{
public static void main(String argv[])
{
try
{
InetAddress address = InetAddress.getByName(argv[0]);
BufferedWriter wr;
BufferedReader rd;
try
{
Socket skt = new Socket(address,80);
wr = new BufferedWriter(new OutputStreamWriter(skt.getOutputStream()));
rd = new BufferedReader(new InputStreamReader(skt.getInputStream()));
String line;
String url = "/login";
String host = "poj.org";
String type = "application/x-www-form-urlencoded";
String content = "user_id1=&password1=";
wr.write("POST "+url+" HTTP/1.1\r\n");
wr.write("Host: "+host+"\r\n");
wr.write("Content-Type: "+type+"\r\n");
wr.write("Content-Length: "+content.length()+"\r\n");
wr.write("\r\n");
wr.write(content+"\r\n");
wr.flush();
url = "/submit";
content =
"problem_id=1000&language=1&source=1234564864fjefjfejkoqjkejl;jf";
wr.write("POST "+url+" HTTP/1.1\r\n");
wr.write("Host: "+host+"\r\n");
wr.write("Content-Type: "+type+"\r\n");
wr.write("Content-Length: "+content.length()+"\r\n");
wr.write("\r\n");
wr.write(content+"\r\n");
wr.flush();
while((line = rd.readLine())!=null)
System.out.println(line);
skt.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
catch(UnknownHostException e)
{
e.printStackTrace();
}
}
}
※ 編輯: CMturtle 來自: 61.225.84.30 (01/25 20:39)
→ tkcn:是要送到 uva quick submit (未登入)那頁嗎? 01/25 20:50
→ CMturtle:我是想傳到pku online judge 上面耶>"< 01/25 20:58
→ tkcn:我只是想確認送出之前需要先登入嗎 :p 01/25 22:46
推 a1234957:SERVLET JSP 01/26 08:49