2017-01-05 9 views
-2

私のデータベースにデータを投稿するアンドロイドアプリを作成しました。アプリケーションは、データをデータベースにポストするWebサービスにアクセスする必要があります。 Webサービスは正常に動作します。それを私のブラウザで試してみると、彼はすでにサーバーにいます。今私は私のアプリがWebサービスを実行したい。しかし、それは動作しません。私のデバッガーは動作しませんので、デバッグすることはできません。ここでは、Webサービスにアクセスするための私のコードです。何か案は??クラスがHTTPリクエストからの応答がありません

new PostBlog(insertBlogURL).execute(""); 

で私のメインの活動から呼び出され

public class PostBlog extends AsyncTask<String, Void, String> { 
String BlogURL; 

public PostBlog(String insertBlogURL) { 
    BlogURL = insertBlogURL; 
} 

@Override 
protected String doInBackground(String... params) { 
    postBlogData(BlogURL); 
    return null; 
} 

public void postBlogData(String url) { 

    String result = ""; 
    //the year data to send 
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("year", "1980")); 

    //http post 
    try { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(url); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     InputStream is = entity.getContent(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
     is.close(); 

     result = sb.toString(); 
    } catch (Exception e) { 

     //(TextView)rootView.findViewById(R.id.question) 
     Log.e("log_tag", "Error converting result " + e.toString()); 
    } 


} 

}は、サーバー上の私の ".jspという?asdd = SDSD" ファイルを実行するための別の簡単な方法はありますか?

あなたのアイデアをお寄せいただきありがとうございます。

+1

アプリをデバッグできない場合は、ログを追加するだけです。そして、ログが何を言っているか教えてください。 – deathangel908

+0

ログを追加する方法と場所 – theAlgorithmGod

+1

https://developer.android.com/reference/android/util/Log.htmlどのような結果が得られるかわからないすべての行の後。そして、あなたがアンドロイドを勉強しているなら、デバッガと一緒に行くのがよいでしょう。問題が何であるかを理解できない場合は、stackoverflowでの質問の投稿は役に立ちません。 – deathangel908

答えて

0
代わりにやっての

new PostBlog(insertBlogURL).execute("");

変更あなたのコンストラクタと

params[0]を行うことによって、doInBackground方法からURLを取得するには、次に、この

PostBlog blogPoster = new PostBlog(); 
try { 
    blogPoster.execute(insertBlogURL); 
} catch (InterruptedException e) {} catch (ExecutionException e) {} 

Iなどのダウンロードを開始しますこれは私自身のプロジェクトからのコードの修正されたスニペットだと言えるでしょう。あなたが期待しているのとまったく同じです。

+0

変更されたコンストラクタの外観を記述することはできますか?なぜ1回の試行に2回の例外を追加しますか?コンパイラは、エラー4 this.Thanksを示しています。 – theAlgorithmGod

+0

@theAlgorithmGodはあなたのコンストラクタをすべて削除しますが、あなたはそれを必要としません。あなたdoInBackgroundでは、 'postBlogData'メソッドに' BlogURL'を渡すのではなく、 'params [0]' – sketch204

+0

@theAlgorithmGodを渡します。正確に2つのエラーを捕まえるので、もちろん一般的な 'Exception'あなたは正確にどのエラーが発生したのかわかりませんが、コンパイラのエラーをあまり知らずに助けてくれることはできません。 – sketch204