이 답변에서는 Justin Grammens가 게시 한 예제를 사용하고 있습니다.
JSON 정보
JSON은 JavaScript Object Notation을 나타냅니다. JavaScript에서 속성은 이와 같이 object1.name
그리고 이와 같이 참조 될 수 있습니다 object['name'];
. 이 기사의 예제는이 JSON 비트를 사용합니다.
이메일을 키로, foo@bar.com을 값으로 사용하는 Parts A 팬 객체
{
fan:
{
email : 'foo@bar.com'
}
}
따라서 동등한 객체는 fan.email;
또는 fan['email'];
입니다. 둘 다 같은 값을가집니다 'foo@bar.com'
.
HttpClient 요청 정보
다음은 저자가 HttpClient 요청 을 만드는 데 사용한 것 입니다. 나는 이것에 대해 전혀 전문가라고 주장하지 않는다. 그래서 누군가가 용어의 일부를 표현하는 더 좋은 방법을 가지고 있다면 자유롭게 느끼십시오.
public static HttpResponse makeRequest(String path, Map params) throws Exception
{
//instantiates httpclient to make request
DefaultHttpClient httpclient = new DefaultHttpClient();
//url with the post data
HttpPost httpost = new HttpPost(path);
//convert parameters into JSON object
JSONObject holder = getJsonObjectFromMap(params);
//passes the results to a string builder/entity
StringEntity se = new StringEntity(holder.toString());
//sets the post request as the resulting string
httpost.setEntity(se);
//sets a request header so the page receving the request
//will know what to do with it
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
//Handles what is returned from the page
ResponseHandler responseHandler = new BasicResponseHandler();
return httpclient.execute(httpost, responseHandler);
}
지도
Map
데이터 구조에 익숙하지 않은 경우 Java Map 레퍼런스를 참조하십시오 . 간단히 말해지도는 사전 또는 해시와 유사합니다.
private static JSONObject getJsonObjectFromMap(Map params) throws JSONException {
//all the passed parameters from the post request
//iterator used to loop through all the parameters
//passed in the post request
Iterator iter = params.entrySet().iterator();
//Stores JSON
JSONObject holder = new JSONObject();
//using the earlier example your first entry would get email
//and the inner while would get the value which would be 'foo@bar.com'
//{ fan: { email : 'foo@bar.com' } }
//While there is another entry
while (iter.hasNext())
{
//gets an entry in the params
Map.Entry pairs = (Map.Entry)iter.next();
//creates a key for Map
String key = (String)pairs.getKey();
//Create a new map
Map m = (Map)pairs.getValue();
//object for storing Json
JSONObject data = new JSONObject();
//gets the value
Iterator iter2 = m.entrySet().iterator();
while (iter2.hasNext())
{
Map.Entry pairs2 = (Map.Entry)iter2.next();
data.put((String)pairs2.getKey(), (String)pairs2.getValue());
}
//puts email and 'foo@bar.com' together in map
holder.put(key, data);
}
return holder;
}
이 게시물에 대해 발생하는 질문이나 내가 명확하게 말하지 않았거나 여전히 혼란스러워하는 것에 대해 언급하지 않았다면 언제든지 의견을 보내주십시오.
(저스틴 그래 멘스가 승인하지 않으면 삭제하겠습니다. 그렇지 않다면 저스틴에 대해 쿨하게 감사합니다.)
최신 정보
코드 사용 방법에 대한 의견을 듣게되었고 반환 유형에 오류가 있음을 깨달았습니다. 메서드 시그니처는 문자열을 반환하도록 설정되었지만이 경우에는 아무것도 반환하지 않았습니다. 서명을 HttpResponse로 변경하고 HttpResponse
의 응답 본문 얻기에 대한 이 링크를 참조 할 것입니다 . 경로 변수는 url이며 코드의 실수를 수정하기 위해 업데이트했습니다.