2017-04-11 64 views
1

我在使用2因素身份验证创建应用程序时遇到了一些麻烦。我决定使用twilio作为我的短信网关,并决定继续他们的教程。然而,我遇到了入队问题,尽管已经导入了我需要的东西,但仍然无法解决。enqueue okhttp3无法解决java问题

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
import android.content.Context; 
import java.io.IOException; 
import okhttp3.Call; 
import okhttp3.Callback; 
import okhttp3.FormBody; 
import okhttp3.OkHttpClient; 
import okhttp3.Request; 
import okhttp3.RequestBody; 
import okhttp3.Response; 

public class MainActivity extends AppCompatActivity { 

private EditText mTo; 
private EditText mBody; 
private Button mSend; 
private OkHttpClient mClient = new OkHttpClient(); 
private Context mContext; 

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

    mTo = (EditText) findViewById(R.id.txtNumber); 
    mBody = (EditText) findViewById(R.id.txtMessage); 
    mSend = (Button) findViewById(R.id.btnSend); 
    mSend.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      try { 
       post(mContext.getString(Integer.parseInt("http://4a61510d.grok.io/sms")), new Callback(){ 

        @Override 
        public void onFailure(Call call, IOException e) { 
         e.printStackTrace(); 
        } 

        @Override 
        public void onResponse(Call call, Response response) throws IOException { 
         runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 
           mTo.setText(""); 
           mBody.setText(""); 
           Toast.makeText(getApplicationContext(),"SMS Sent!",Toast.LENGTH_SHORT).show(); 
          } 
         }); 
        } 
       }); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
    mContext = getApplicationContext(); 
} 
Call post(String url, Callback callback) throws IOException { 
    RequestBody formBody = new FormBody.Builder() 
      .add("To", mTo.getText().toString()) 
      .add("Body", mBody.getText().toString()) 
      .build(); 
    Request request = new Request.Builder() 
      .url(url) 
      .post(formBody) 
      .build(); 
    Call response = mClient.newCall(request); 
    Response.**enqueue**(callback); 
    return response; 
}} 

我的build.gradle以及

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
{ 
    exclude group: 'com.android.support', module: 'support-annotations' 
}) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:25.3.1' 
compile 'com.android.support.constraint:constraint-layout:1.0.2' 
compile 'com.squareup.okhttp3:okhttp:3.6.0' 

和我的清单XML

<uses-permission android:name="android.permission.INTERNET"/> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

我已经尝试过清理我的构建和我的缓存失效后重新启动。任何帮助,将不胜感激。

+0

“的Integer.parseInt(” http://4a61510d.grok.io/sms “)” 导致NumberFormatException异常,并且响应应该使用小写。 – zayn

+0

这工作,但关于“Integer.parseInt(”4a61510d.grok.io/sms“)”一切似乎让我无法解决错误。 – Wshivnarine

回答

0

响应没有静态方法入队,所以尽管已经导入,仍然无法解析。您需要使用对象响应。

Call response = mClient.newCall(request); 
response.enqueue(callback); 
return response; 
+0

感谢,似乎修复它 – Wshivnarine

0

试试这个

response.enqueue(callback); 
return response; 
+0

请提供更多信息,为什么此代码将工作。 – sidgate