2015-11-22 27 views
-2

我正在開發Android工作室的gcm聊天應用程序,並且出現此錯誤ñ不知道如何解決它。我搜索了它,但沒有發現任何東西。 這裏的代碼和MainActivity.java也有同樣的問題。無法解析符號okhttp

package com.example.jason.androidchat2; 
import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.AsyncTask; 
import android.support.annotation.NonNull; 
import android.support.v4.content.LocalBroadcastManager; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.Toast; 
import com.squareup.okhttp.OkHttpClient; 
import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Iterator; 
import java.util.List; 
import java.util.ListIterator; 


public class ChatActivity extends Activity { 

EditText editText_mail_id; 
EditText editText_chat_message; 
ListView listView_chat_messages; 
Button button_send_chat; 
List<ChatObject> chat_list; 

BroadcastReceiver recieve_chat; 

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

    editText_mail_id= (EditText) findViewById(R.id.editText_mail_id); 
    editText_chat_message= (EditText)  findViewById(R.id.editText_chat_message); 
    listView_chat_messages= (ListView) findViewById(R.id.listView_chat_messages); 
    button_send_chat= (Button) findViewById(R.id.button_send_chat); 
    button_send_chat.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      // send chat message to server 
      String message=editText_chat_message.getText().toString(); 

      showChat("sent",message); 

      new SendMessage().execute(); 

      editText_chat_message.setText(""); 


     } 
    }); 


    recieve_chat=new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 

      String message=intent.getStringExtra("message"); 

      Log.d("pavan","in local braod "+message); 
      showChat("recieve",message); 


     } 
    }; 

    LocalBroadcastManager.getInstance(this).registerReceiver(recieve_chat, new IntentFilter("message_recieved")); 



} 

private void showChat(String type, String message){ 

    if(chat_list==null || chat_list.size()==0){ 

     chat_list= new ArrayList<ChatObject>(); 
    } 

    chat_list.add(new ChatObject(message,type)); 

    ChatAdabter chatAdabter=new ChatAdabter(ChatActivity.this,R.layout.chat_view,chat_list); 

    listView_chat_messages.setAdapter(chatAdabter); 
    //chatAdabter.notifyDataSetChanged(); 

} 


@Override 
protected void onDestroy() { 
    super.onDestroy(); 

} 

private class SendMessage extends AsyncTask<String, Void, String> { 

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     // TODO Auto-generated method stub 

     String url = Util.send_chat_url+"?email_id="+editText_mail_id.getText().toString()+"&message="+editText_chat_message.getText().toString(); 
     Log.i("pavan", "url" + url); 

     OkHttpClient client_for_getMyFriends = new OkHttpClient();; 

     String response = null; 
     // String response=Utility.callhttpRequest(url); 

     try { 
      url = url.replace(" ", "%20"); 
      response = callOkHttpRequest(new URL(url), 
        client_for_getMyFriends); 
      for (String subString : response.split("<script", 2)) { 
       response = subString; 
       break; 
      } 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


     return response; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     //Toast.makeText(context,"response "+result,Toast.LENGTH_LONG).show(); 

    } 


} 

// Http request using OkHttpClient 
String callOkHttpRequest(URL url, OkHttpClient tempClient) 
     throws IOException { 

    HttpURLConnection connection = tempClient.open(url); 

    connection.setConnectTimeout(40000); 
    InputStream in = null; 
    try { 
     // Read the response. 
     in = connection.getInputStream(); 
     byte[] response = readFully(in); 
     return new String(response, "UTF-8"); 
    } finally { 
     if (in != null) 
      in.close(); 
    } 
} 

byte[] readFully(InputStream in) throws IOException { 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    byte[] buffer = new byte[1024]; 
    for (int count; (count = in.read(buffer)) != -1;) { 
     out.write(buffer, 0, count); 
    } 
    return out.toByteArray(); 
} 

}

+0

OkHttp只需添加這是一個第三方庫,並在SDK本身不提供。您將需要下載JAR文件並將其放入項目庫文件夾中或在項目gradle文件中添加「compile ...」語句。下面是選項:http://square.github.io/okhttp/#download –

+0

感謝它的工作,但 字符串callOkHttpRequest(URL網址,OkHttpClient tempClient) 拋出IOException異常{ HttpURLConnection的連接= tempClient.open(URL); 錯誤無法解析符號打開。 –

回答

4

OkHTTP是一個開源項目設計成一個有效的HTTP客戶端。

build.gradle

dependencies { 

    compile 'com.squareup.okhttp:okhttp:2.5.0' 
} 
+0

它給我錯誤未能解決com.squareup.okhttp:okhttp:2.5.0 –

+0

發佈您的'build.gradle'總代碼 –

+0

您可以使用'compile'c​​om.squareup.okhttp:okhttp:2.1.0'' –