2016-08-18 19 views
1

私が作成したローカルのdbにjsonファイルを送信するアンドロイドアプリを作成しています。しかし、私がそれを開始しようとするたびに、私のgradleの同期は失敗します。私は正しい場所にすべてを置いた(私は思う)が、なぜ私は分からない。 は、ここに私のGradleです:アンドロイドアプリからローカルdbにJsonを送信

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.1" 

    defaultConfig { 
     applicationId "francesco.postjson" 
     minSdkVersion 23 
     targetSdkVersion 24 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:24.2.0' 
    classpath 'com.android.tools.build:gradle:2.1.3' 
    compile 'cz.msebera.android:httpclient:4.4.1.1' 
    compile files('libs/httpcore-4.4.4.jar') 
    compile files('libs/okhttp-3.4.1.jar') 
    compile files('libs/commons-codec-1.9.jar') 
    compile files('libs/commons-logging-1.2.jar') 
    compile 'com.squareup.okhttp:okhttp:2.0.0' 
    compile files('libs/httpclient-win-4.5.2.jar') 
    compile files('libs/httpclient-4.5.2.jar') 
    compile files('libs/httpcore-4.4.4.jar') 
    compile files('libs/fluent-hc-4.5.2.jar') 
} 

私は、依存関係のこれらのタイプを使用していると私はエラーを抱えている:

Error:(25, 0) Could not find method classpath() for arguments [com.android.tools.build:gradle:2.1.3] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. 
<a href="openFile:C:\Users\Francesco\AndroidStudioProjects\POSTJSON\app\build.gradle">Open File</a> 

は、私は別の場所で依存関係を配置する必要がありますか?あなた

編集ありがとう:ここに私のコードは、すべての

package francesco.postjson; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.URLConnection; 
import org.json.JSONObject; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.app.Activity; 
import francesco.postjson.Person; 

public class MainActivity extends Activity implements OnClickListener { 

    TextView tvIsConnected; 
    EditText etName,etCountry,etTwitter; 
    Button btnPost; 

    Person person; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // get reference to the views 
     tvIsConnected = (TextView) findViewById(R.id.tvIsConnected); 
     etName = (EditText) findViewById(R.id.etName); 
     etCountry = (EditText) findViewById(R.id.etCountry); 
     etTwitter = (EditText) findViewById(R.id.etTwitter); 
     btnPost = (Button) findViewById(R.id.btnPost); 

     // check if you are connected or not 
     if(isConnected()){ 
      tvIsConnected.setBackgroundColor(0xFF00CC00); 
      tvIsConnected.setText("You are conncted"); 
     } 
     else{ 
      tvIsConnected.setText("You are NOT conncted"); 
     } 

     // add click listener to Button "POST" 
     btnPost.setOnClickListener(this); 

    } 

    public static String POST(String url, Person person){ 
     InputStream inputStream = null; 
     String result = ""; 
     try { 

      // 1. create HttpClient 
      HttpClient httpclient = new DefaultHttpClient(); 

      // 2. make POST request to the given URL 
      HttpPost httpPost = new HttpPost(url); 

      String json = ""; 

      // 3. build jsonObject 
      JSONObject jsonObject = new JSONObject(); 
      jsonObject.accumulate("name", person.getName()); 
      jsonObject.accumulate("country", person.getCountry()); 
      jsonObject.accumulate("twitter", person.getTwitter()); 

      // 4. convert JSONObject to JSON to String 
      json = jsonObject.toString(); 

      // ** Alternative way to convert Person object to JSON string usin Jackson Lib 
      // ObjectMapper mapper = new ObjectMapper(); 
      // json = mapper.writeValueAsString(person); 

      // 5. set json to StringEntity 
      StringEntity se = new StringEntity(json); 

      // 6. set httpPost Entity 
      httpPost.setEntity(se); 

      // 7. Set some headers to inform server about the type of the content 
      httpPost.setHeader("Accept", "application/json"); 
      httpPost.setHeader("Content-type", "application/json"); 

      // 8. Execute POST request to the given URL 
      HttpResponse httpResponse = httpclient.execute(httpPost); 

      // 9. receive response as inputStream 
      inputStream = httpResponse.getEntity().getContent(); 

      // 10. convert inputstream to string 
      if(inputStream != null) 
       result = convertInputStreamToString(inputStream); 
      else 
       result = "Did not work!"; 

     } catch (Exception e) { 
      Log.d("InputStream", e.getLocalizedMessage()); 
     } 

     // 11. return result 
     return result; 
    } 

    public boolean isConnected(){ 
     ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Activity.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); 
     if (networkInfo != null && networkInfo.isConnected()) 
      return true; 
     else 
      return false; 
    } 
    @Override 
    public void onClick(View view) { 

     switch(view.getId()){ 
      case R.id.btnPost: 
       if(!validate()) 
        Toast.makeText(getBaseContext(), "Enter some data!", Toast.LENGTH_LONG).show(); 
       // call AsynTask to perform network operation on separate thread 
       new HttpAsyncTask().execute("http://hmkcode.appspot.com/jsonservlet"); 
       break; 
     } 

    } 
    private class HttpAsyncTask extends AsyncTask<String, Void, String> { 
     @Override 
     protected String doInBackground(String... urls) { 

      person = new Person(); 
      person.setName(etName.getText().toString()); 
      person.setCountry(etCountry.getText().toString()); 
      person.setTwitter(etTwitter.getText().toString()); 

      return POST(urls[0],person); 
     } 
     // onPostExecute displays the results of the AsyncTask. 
     @Override 
     protected void onPostExecute(String result) { 
      Toast.makeText(getBaseContext(), "Data Sent!", Toast.LENGTH_LONG).show(); 
     } 
    } 

    private boolean validate(){ 
     if(etName.getText().toString().trim().equals("")) 
      return false; 
     else if(etCountry.getText().toString().trim().equals("")) 
      return false; 
     else if(etTwitter.getText().toString().trim().equals("")) 
      return false; 
     else 
      return true; 
    } 
    private static String convertInputStreamToString(InputStream inputStream) throws IOException{ 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
     String line = ""; 
     String result = ""; 
     while((line = bufferedReader.readLine()) != null) 
      result += line; 

     inputStream.close(); 
     return result; 

    } 
} 
+0

ウィンドウを使用している場合は、ウィンドウがCドライブを保護しようとするため、他のディレクトリにプロジェクトを配置する方がよいでしょう。セキュリティ上の理由により、org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandlerがビルドファイルにアクセスできませんでした。 –

答えて

0

まず、あなたはJSONを送るあなたのコードの共有部分を送信するためです。

第2に、なぜたくさんの依存関係を使用していますか?おそらくあなたはApacheクラスを使用しようとしており、これらの依存関係のインターネットのどこかで見つかっています。コードを投稿した後、トータルソリューションを提供することができます。しかし、この行を削除しようとしてください:classpath 'com.android.tools.build:gradle:2.1.3'。また、Apacheクラスの代わりにHttpURLConnectionを使用してください。なぜなら、lastは推奨されないからです。

(これはコメントでなければならないが、私の評判は低い)

+0

が編集されました。また、それらのすべてを削除しようとしましたが、どちらも使用できません – lavendemmia

+0

あなたは50以上の評判を持っていますので、Turkhanの質問にコメントできるはずです。 – halfer

0
classpath 'com.android.tools.build:gradle:2.1.3' 

これは、モジュールのgradleファイルではなく、プロジェクトのgradleファイルで指定する必要があります。

のApache HTTPクライアントを使用するために、モジュールのGradle Iにおけるアンドロイドタグ内

useLibrary 'org.apache.http.legacy'

を追加します。 e以降

+0

今、私はそのファイルを削除し、httpclient、httppost、ecc eccのすべてを自分のコードで見つけることができません。どのように私はこれを解決するのですか? – lavendemmia

関連する問題