2012-02-21 2 views
1

WCF 서비스를 통해 데이터베이스에 두 개의 필드를 삽입해야하지만 다음 코드는 Eclipse에서 테스트 할 때 405 메소드가 허용되지 않습니다.Android WCF 메서드가 허용되지 않습니다.

WCF는 Fiddler와 C# 웹 클라이언트 테스트에서 모두 작동합니다. Android에서 발생하는 오류는 내 전화를 통해 발생하므로이 코드에 문제가있을 수 있습니다.

HttpPost request = new HttpPost("http://www.mysite.com/myservice.svc/postname?fname=fred&lname=frognoggle"); 

request.setHeader("Accept", "application/json"); 
request.setHeader("Content-type", "application/json"); 

DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpResponse response = httpClient.execute(request); 

Log.d("WebInvoke", "Saving : " + response.getStatusLine().getStatusCode()); 

내가 누락 된 부분을 누구든지 볼 수 있습니까?

내가 피들러에 게시물을하고있어 내가 게시 할 경우

편집 : 그것은 모두 잘 작동 작동

http://www.mysite.com/myservice.svc/postname?fname=fred&lname=frognoggle 

.

건배,

마이크.

+0

없이 같은 콘텐츠 유형에 해당해야 놓아야합니다 , 나는 당신이 이런 식으로 POST를 할 수 없다는 말은 아니었다. 나는 당신이 당신의 코멘트를하기 전에 이것을 업데이트했다. (아마 거의 같은 시간에). POST는 잘 작동 할 것입니다 (생각합니다. 시체를 설정하지 않고 시도한 적이없는 것 같습니다.) 본문을 설정하지 않았기 때문에 내용의 길이 또는 무언가를 설정하지 않는지 궁금합니다. 혼란을 가져 미안합니다. 투표를 끝내 겠지만 코드가 나를 알려주면 다시 게시 할 것입니다. –

+0

나중에 코드를 투표 할 수 없기 때문에 사진처럼 보이며 1000 단어를 말합니다 !!! 다시 게시 할 수 있습니까? 비록 Content-Length를 추가하지 않으면 바이올린에서 Content-Length와 관련이있을 수 있습니다. 오류 411, 오라클 라 ... 롤 –

+0

감사합니다. Mike, 코드가 도움이 되길 바랍니다. 작동하고 있습니까? 어떤 웹 서버를 실행하고 있습니까? –

답변

1

업데이트 : 요청으로 돌아 가기. 아래 코드는 안드로이드에서 JSON POST를 만들기 위해 사용하고있는 코드입니다.

Android 코드에서 HTTP POST를하고 있습니다. 피들러에서 POST를하고 있습니까, 아니면 GET을하고 있습니까? 내가 물어 보는 이유는 쿼리 문자열 만 설정하여 게시물이있는 본문을 보내지 않는다는 것입니다. WCF 서비스에 JSON POST를 수행하는 Android 코드를 포함 시켰습니다. 이 도움이

희망 ...

당신은 내가 도움을 업데이트 대답 기쁠 것입니다 자세한 내용을 게시 할 경우

.

public JSONObject sendPOSTurl(String url, JSONObject data) throws JSONException 
    { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(url); 
     HttpResponse response; 

     try 
     { 
      StringEntity se = new StringEntity(data.toString()); 

      httppost.setEntity(se); 
      httppost.setHeader("Accept", "application/json"); 
      httppost.setHeader("Content-type", "application/json"); 

      response = httpclient.execute(httppost); 

      HttpEntity entity = response.getEntity(); 

      if (entity != null) 
      { 
       InputStream instream = entity.getContent(); 
       String result = convertStreamToString(instream); 

       instream.close(); 
       return new JSONObject(result); 
      } 
     } 
     catch(Exception e) 
     { 
      Log.e("REST", "Failed to POST data", e); 
     } 

     return null; 
    } 

public static String convertStreamToString(InputStream is) 
{ 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    try 
    { 
     while ((line = reader.readLine()) != null) 
     { 
      sb.append(line + "\n"); 
     } 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     try 
     { 
      is.close(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
    return sb.toString(); 
} 
+0

고마워요 브라이언, 위의 편집을 추가했습니다. 필요한 경우 더 많은 코드를 표시 할 수 있습니다! –

+0

Hein Brain, 코드 감사하지만 Android/Java 앱에서 WCF 서비스로 이름 값 쌍을 보낼 수 없다는 말입니까 ??? –

0
http://www.mysite.com/myservice.svc/postname?fname=fred&lname=frognoggle 

URL이처럼 보이는 HttpGet

당신은 HttpPost를 사용하려는 경우 당신은 당신이 HttpEntity에서 param으로하고 PARAM은 JSON

관련 문제