2013-03-19 6 views
0

현재 서버 측 스크립트의 $ _POST 배열에있는 일부 변수에 액세스하는 데 문제가 있습니다.PHP 포스트 배열이 비어 있음

컨텍스트 : PHP를 사용하는 안드로이드 장치에서 mySQL 서버에 일부 값을 전송합니다. 내가 PHP는 "새로운 경로 만들기"및 자바 예를 들어, 제대로 작동되면 : 변수의 목록을 구축

게시합니다 :

List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("name", name)); 
     params.add(new BasicNameValuePair("startLat", startLat)); 
     params.add(new BasicNameValuePair("startLong", startLong)); 
     params.add(new BasicNameValuePair("endLat", endLat)); 
     params.add(new BasicNameValuePair("endLong", endLong)); 
     params.add(new BasicNameValuePair("waypoints", waypoints.toString())); 
     params.add(new BasicNameValuePair("rating", rating)); 
     params.add(new BasicNameValuePair("difficulty", difficulty)); 
     params.add(new BasicNameValuePair("enjoyability", enjoyability)); 
     params.add(new BasicNameValuePair("count", count)); 
     params.add(new BasicNameValuePair("sum", sum)); 
     params.add(new BasicNameValuePair("countDiff", countDiff)); 
     params.add(new BasicNameValuePair("sumDiff", sumDiff)); 
     params.add(new BasicNameValuePair("countEnjoy", countEnjoy)); 
     params.add(new BasicNameValuePair("sumEnjoy", sumEnjoy)); 

내가 다음을 게시 내 메소드를 호출합니다

 if(method == "POST"){ 
      // request method is POST 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); 
      //System.out.println(httpPost.getURI().toString()); 
      //System.out.println(httpPost.getEntity().toString()); 
      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 

그리고 이것은 잘 작동하며 값은 $ _POST 배열의 PHP 스크립트에서 사용할 수 있습니다. 내가 겪고있는 문제는 다음과 같은 절차를 사용하면 똑같은 프로세스를 수행 할 때 발생합니다 (이 경우 경로를 업데이트하므로 몇 가지 변수가 적습니다. 업데이트를 위해 PHP 스크립트에 반영됩니다) 경로는 :. 나는이 조금 애매 할 수있다 실현하지만 난 당신이 이해를 바랍니다. 나는 데이터를 전송하는 동일한 과정을

  List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("name", name)); 
      params.add(new BasicNameValuePair("rating", Double.toString(currentRating))); 
      params.add(new BasicNameValuePair("difficulty", Double.toString(currentDiff))); 
      params.add(new BasicNameValuePair("enjoyability", Double.toString(currentEnjoy))); 
      params.add(new BasicNameValuePair("count", Double.toString(currentCount))); 
      params.add(new BasicNameValuePair("sum", Double.toString(currentSum))); 
      params.add(new BasicNameValuePair("countDiff", Double.toString(currentDiffCount))); 
      params.add(new BasicNameValuePair("sumDiff", Double.toString(currentDiffSum))); 
      params.add(new BasicNameValuePair("countEnjoy", Double.toString(currentEnjoyCount))); 
      params.add(new BasicNameValuePair("sumEnjoy", Double.toString(currentEnjoySum))); 


      JSONObject jsonEdit = jsonParser.makeHttpRequest(url_edit, 
        "POST" + 
        "", params); 

$ _POST 배열이 PHP 스크립트 서버 측 비어하고있어

두 가지 방법은, 그러나 후자는 비어 있습니다.

답변

2

당신은 인턴 String 양념 이전 ==equals 대 문제를 가지고있다.

이3210 첫 번째 방법은 일반 문자열 객체와 함께 작동

if(method.equals("POST")){ 

이어야한다 범인

if(method == "POST"){ 

입니다. 다른 "POST" 인스턴스와 비교할 때 어떤 "POST" 인스턴스도 true가됩니다 (이유를 알기 위해 String internation을 참조하십시오). 그러나 후자의 경우에 당신은 거기에 뭔가 재미 있습니다

JSONObject jsonEdit = jsonParser.makeHttpRequest(url_edit, 
       "POST" + //Ooooops, what is this? 
       "", params); 

이제 참조 "POST" == "POST"+""이 ... 이것은 콘텐츠에 의해 그들을 비교하지 않습니다 비교,하지만! 두 번째 것은 다른 것으로, 결과는 false입니다.

관련 문제