비교 3번째네요. 제가 저번 프로젝트때 가장 기초적인 것임에도 불고 하고 제일 혼란해 했던.... 저혼자서 끙끙 앓다가 결국 물어봐서 해결본 것이에요. 그래서 물어보기 전까지 혼자서 생쑈를 했죠. ^^ 일단 코드를 보자구요.

C#코드
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;>
class HttpClientGet
{
    static void Main(string[] args)
    {
        HttpWebRequest wReq =
            (HttpWebRequest)WebRequest.Create(@"http://hahakbs.dothost.co.kr/reqTest.php?input=123256");
        wReq.UserAgent = ".NET Framwork Example Client";
        HttpWebResponse wResp = (HttpWebResponse)wReq.GetResponse();
        Stream respStream = wResp.GetResponseStream();
        StreamReader reader = new StreamReader(respStream, Encoding.Default);
        while (reader.Peek() >= 0)
        {
            String str = reader.ReadLine();
            Console.WriteLine(str);
            if (str.Equals("Y"))
                Console.WriteLine("Get Y");
            else
                Console.WriteLine("Get else");
        }
    }
}



 

결과
N
Get else



 

자바코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class HttpRequest {
 public static void main(String[] args)
  throws MalformedURLException, IOException {
  HttpURLConnection connection =
   (HttpURLConnection) new URL("http://hahakbs.dothost.co.kr/reqTest.php?input=123456").openConnection();
 
  BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
  String line;
  while ((line = in.readLine()) != null){
   System.out.println(line);
   
   if(line.equals("Y")) {
    System.out.println("Get Y");
   } else {
    System.out.println("Get else");
   }
  }
 }
}


 

결과
Y
Get Y



위의 예제는 간단하다. 미리 만들어 놓은 사이트에 input에 값을 Request한다. 그리고 그 것에 대한 값을 Stream 형태롤 받아서 그 값을 출력한다. input의 값은 123456 일 경우는 Y라는 문자열을 그 외의 경우에는 N이라는 문자열을 보낸다.

뭐 두개의 프로그램상 별다른 차이점은 그다지 없다. C#에서는 HttpWebRequset 객체를 생성하고 그 객체에서 리스폰스를 받아 스트림 버퍼로 읽고 그 읽은 값을 뿌려주고 비교해주고, 자바에서는 HttpURLConnection 객체를 URL객체의 커넥션으로 생성해 그 값을 버퍼 리더로 읽어서 뿌려준다.

자바쪽은 따로 Request나 Response 객체를 둔것이 아니라, Connection 객체를 두어 사용함으로서 조금더 간편하다고 할수 있을것이다. 그리고 어차피 읽어오는 응답텍스트 들은 각각의 스트림객체를 통해 읽어오는것은 비슷하다 할수 있겠다.

위처럼 간단한 것을 하기 위해 한참을 몰랐다가 알았을 때는 정말 한심했다. ^^ 물론 C#이 아니라 자바쪽을.... 왠지 자바쪽은 쉽게 접해지지 않는것 같다. 역시 MS쪽에 길들어 져서.

그런데 제일 혼란 스러웠던 것은 저것이 그냥 콘솔이 아니라, 웹 상에서 했기 때문이기도 하다. 요구점은 이것이였다. 웹 서비스에서 유저가 접속을 해서 내 페이지에서 숫자를 입력 하면, 그 결가 데이터가 자체 웹서버의 DB나 파일에 있는게 아니라 다른 웹에 입력값을 전송하고, 그 전송값에 대한 결과 값을 받아서 처리하는.. 그래서 감을 잡기가 힘들었던거 같다.

Trackback url :: http://hahakbs.dothost.co.kr/trackback/81

댓글을 달아 주세요

  1. new URL("http://hahakbs.dothost.co.kr/reqTest.php?input=123456").openConnection();는
    (new URL("http://hahakbs.dothost.co.kr/reqTest.php?input=123456")).openConnection();와 같은 의미인가요? ;;
    C#과 비교 하면 어딘가 부자연 스러운 문법이네요 ㅎㅎ;

    그리고 이따금씩 C#이 자바와 정말 비슷하구나 라고 느껴지네요 ;;

    • 네 괄호는 new 연산자에 붙은거 맞고요,
      new하면서 생성과 동시에 객체를 openConnection시키는것 같습니다.

      아 그리고 저도 하다 보면서 많이 비슷하다고 느끼고 있습니다.


div>