반응형

com.sun.net.httpserver.HttpServer 을 이용해 java에서 간단한 웹서버를 만들었습니다.

만든 서버는 GET 방식을 이용해서 Request 받고 

결과를 처리해 줍니다. 


GET 방식으로 http의 주소에 붙어오는 key와 value를 JAVA 의 MAP에 매핑하고 싶었습니다.


그 방법을 메모해 둡니다.



public Map<String, String> queryToMap(String query)
{
    Map<String, String> result = new HashMap<String, String>();
    for (String param : query.split("&")) {
        String pair[] = param.split("=");
        if (pair.length>1) {
            result.put(pair[0], pair[1]);
        }else{
            result.put(pair[0]"");
        }
    }
    return result;
}



위의 함수가 GET 방식의 쿼리를 JAVA Map에 매핑후 리턴해 줍니다.


사용은 아래와 같이 하시면 됩니다.


Map<String, String> params = queryToMap(HttpExchange exchange.getRequestURI().getQuery())
System.out.println("param A=" + params.get("A"));




키가 A 인 값을 MAP 에서 찾아 출력해 줍니다.






반응형
반응형

String cookie_id = ""; void SendDdata(string data, string addr) { WWWForm form = new WWWForm(); Hashtable hash = new Hashtable(); hash.Add("Cookie", cookie_id); form.AddField("data",data); WWW www = new WWW(서버 IP, form.data, hash); StartCoroutine(WaitForRequest(www)); } private IEnumerator WaitForRequest(WWW www) { yield return www; // check for errors if (www.error == null) { Debug.Log("WWW Ok!: " + www.text); if (www.responseHeaders.ContainsKey("SET-COOKIE")){ cookie_id = www.responseHeaders["SET-COOKIE"]; } } else { Debug.Log("WWW Error: " + www.error); } }




핵심은  Cookie를 Hastable를 만들어 추가해서 보내는겁니다. 


쿠키가 없다면

WWW www = new WWW(서버 IP, form) 해당 형태로 보내겠지만


Hastable을 생성해서 추가할때는 꼭 form이 아닌 바이트배열 형태인 form.data로 바꿔줘야 합니다.


그래서

WWW www = new WWW(서버 IP, form.data, hash); 형태가 되는거지요 ^ㅡ^






반응형

'Unity3D' 카테고리의 다른 글

[Unity3D][C#] Unity3d HTTP GET,POST 통신  (0) 2013.07.17
반응형
  1 using UnityEngine; 
  2 using System.Collections; 
  3 using System.Collections.Generic; 
  4 using System.Text; 
  5 using System.IO; 
  6 using System.Net;
  7 
  8 public class WWWWiki : MonoBehaviour 
  9 
 10 { 
 11     // Use this for initialization 
 12     void Start() 
 13     {          
 14 
 15     } 
 16 
 17     // Update is called once per frame 
 18 
 19     void Update() 
 20     { 
 21 
 22     } 
 23 
 24     void OnGUI() 
 25     {
 26 
 27     } 
 28 
 29     public WWW GET(string url) 
 30     { 
 31         WWW www = new WWW(url); 
 32         StartCoroutine(WaitForRequest(www)); 
 33         return www; 
 34     } 
 35 
 36     public WWW POST(string url, Dictionary<string, string> post) 
 37     { 
 38 
 39         WWWForm form = new WWWForm(); 
 40 
 41         foreach (KeyValuePair<string, string> post_arg in post) 
 42         { 
 43 
 44             form.AddField(post_arg.Key, post_arg.Value); 
 45 
 46         } 
 47 
 48         WWW www = new WWW(url, form); 
 49         StartCoroutine(WaitForRequest(www)); 
 50         return www; 
 51 
 52     } 
 53 
 54 
 55     private IEnumerator WaitForRequest(WWW www) 
 56     { 
 57         yield return www; 
 58         // check for errors 
 59         if (www.error == null) 
 60         { 
 61             Debug.Log("WWW Ok!: " + www.text); 
 62         } 
 63         else 
 64         { 
 65             Debug.Log("WWW Error: " + www.error); 
 66         } 
 67     } 
 68 
 69 }



Stack Over flow 에서 주섰습니다 ^ㅡ^







반응형

+ Recent posts