M:OZ SOFT

Java MEMO

JAVA HTTP SAMPLE

JAVAでHTTP通信するサンプルプログラム。 これを応用するとWEBサーバのCGIと連携するプログラムを作ることができる。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLEncoder;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import javax.swing.JOptionPane;
public class TestHttp {
 public static void main(String[] args){
  try{
   URL url = new URL("http://www.example.com/");
   Authenticator.setDefault(createHttpAuthenticator());
   HttpURLConnection conn = (HttpURLConnection) url.openConnection();
   conn.setUseCaches(false);
   conn.setRequestMethod("POST"); /* GET or POST */
   conn.setDoOutput(true); /* GET:false / POST:true */
   conn.connect();
   BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
   StringBuffer outBuf = new StringBuffer();
   /* GET の場合は URL にくっつける。 */
   outBuf.append("&name1=").append(URLEncoder.encode("DATA1","UTF-8"));
   outBuf.append("&name2=").append(URLEncoder.encode("DATA2","UTF-8"));
   writer.write(outBuf.toString());
   writer.close();
   BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
   StringBuffer inBuf = new StringBuffer();
   String line;
   while((line = reader.readLine()) != null){
    inBuf.append(line).append('\n');
   }
   System.out.println(inBuf.toString());
   reader.close();
   conn.disconnect();
  }catch(Exception ex){
   JOptionPane.showMessageDialog(null, ex.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
   ex.printStackTrace();
  }
 }
 public static java.net.Authenticator createHttpAuthenticator(){
  return new java.net.Authenticator(){
   private String username = "xxxxxxxx";
   private String password = "xxxxxxxx";
   protected java.net.PasswordAuthentication getPasswordAuthentication(){
    return new java.net.PasswordAuthentication(username, password.toCharArray());
   }
  };
 }
}

JAVA MAIL SMTP SAMPLE

JAVAでメール送信するサンプルプログラム。 別途拡張ライブラリ(JavaMail/JAF)が必要。 スパムは送らないようにしましょう。

import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.swing.JOptionPane;
public class TestSmtp {
 public static void main(String[] args){
  try{
   Properties props = System.getProperties();
   props.setProperty("mail.smtp.host","mail.example.com");
   props.setProperty("mail.from","info@example.com");
   props.setProperty("smtp.auth","true");
   Session session = Session.getDefaultInstance(props, (Authenticator) createSmtpAuthenticator());
   MimeMessage mimeMessage = new MimeMessage(session);
   InternetAddress[] address;
   mimeMessage.setFrom(new InternetAddress(mailFrom,nameFrom,"iso-2022-jp"));
   address = parseAddress(txtTo);
   mimeMessage.setRecipients(Message.RecipientType.TO,address);
   address = parseAddress(txtCc);
   mimeMessage.setRecipients(Message.RecipientType.CC,address);
   address = parseAddress(txtBcc);
   mimeMessage.setRecipients(Message.RecipientType.BCC,address);
   mimeMessage.setSubject(txtSubject,"iso-2022-jp");
   mimeMessage.setText(txtBody,"iso-2022-jp");
   mimeMessage.setHeader("Content-Type","text/plain; charset=ISO-2022-JP");
   mimeMessage.setHeader("Content-Transfer-Encoding","7bit");
   mimeMessage.setSentDate(new java.util.Date());
   Transport.send(mimeMessage);
  }catch(Exception ex){
   JOptionPane.showMessageDialog(null, ex.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
   ex.printStackTrace();
  }
 }
 public static javax.mail.internet.InternetAddress[] parseAddress(String str){
  if(str == null) return null;
  if(str.length() == 0) return null;
  javax.mail.internet.InternetAddress[] address = null;
  try{
   address = javax.mail.internet.InternetAddress.parse(str);
   for(int i = 0; i < address.length; i++){
    String mail = address[i].getAddress();
    String name = address[i].getPersonal();
    address[i] = new javax.mail.internet.InternetAddress(mail,name,"iso-2022-jp");
   }
  }catch(Exception ex){
   JOptionPane.showMessageDialog(null, ex.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
   ex.printStackTrace();
  }
  return address;
 }
 public static javax.mail.Authenticator createSmtpAuthenticator(){
  return new javax.mail.Authenticator(){
   private String username = "xxxxxxxx";
   private String password = "xxxxxxxx";
   protected javax.mail.PasswordAuthentication getPasswordAuthentication(){
    return new javax.mail.PasswordAuthentication(username,password);
   }
  };
 }
}

JAVA FTP SAMPLE

URL url = new URL("ftp://username:password@www.example.com/filename.txt;type=i");
URLConnection con = url.openConnection();
// ダウンロードの場合
BufferedInputStream in = new BufferedInputStream(con.getInputStream());
// アップロードの場合
PrintWriter out = new PrintWriter(con.getOutputStream());

フレームの表示位置をネイティブのウィンドウシステムのデフォルトの場所する

JFrame frame = new JFrame();
frame.setLocationByPlatform(true);

ダイアログの表示位置をセンタリングする

JDialog dialog = new JDialog(parent);
dialog.setLocationRelativeTo(parent);

[ RETURN ]