使用改造okHttp

时间:2016-01-31 16:15:06

标签: android retrofit facebook-sdk-4.0 okhttp retrofit2

我现在正在使用改装,OkHttp和facebook sdk来进行facebook注册。但我的注册方法有问题“Fail :: java.lang.IllegalStateException:预期BEGIN_OBJECT但是STRING在第1行第1列路径$”。你能看一下吗?这是我的代码。这是facebook resigter事件。

 loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(
                                    JSONObject object,
                                    GraphResponse response) {

                                try {
                                    user_id = response.getJSONObject().get("id") + "";
                                    Log.i("User id", user_id);
                                    register(user_id);

                                    setProfile();
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }

                                try {
                                    response.getJSONObject().get("id");
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }

                            }
                        });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id,name,email,gender, birthday");
                request.setParameters(parameters);
                request.executeAsync();



            }


            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException error) {

            }
    });

这是我的注册方法。

public void register(String id){
        String pic_link="https://graph.facebook.com/" + id + "/picture?type=large";
        Call<HashMap<String,String>> register= Login_api.createService(Login_service.class).register(id,pic_link);
        register.enqueue(new Callback<HashMap<String, String>>() {
            @Override
            public void onResponse(Response<HashMap<String, String>> response, Retrofit retrofit) {
                Log.i("SUCCESS:","MOTHER FUCKER");
            }

            @Override
            public void onFailure(Throwable t) {

                Log.i("Fail:",t.getMessage());
            }
        });
    }

这是我的api课程

public class Login_api {

    private static Retrofit.Builder builder = new Retrofit.Builder()
            .baseUrl("http://192.168.0.111")
            .addConverterFactory(GsonConverterFactory.create())
            .client(new MyOkHttp());

    public Login_api(){

    }

    public static <S> S createService(Class<S> serviceClass) {
        Retrofit retrofit = builder.build();
        return retrofit.create(serviceClass);
    }
}

这是我的服务界面

public interface Login_service  {

    @FormUrlEncoded
    @POST("androidapi/public/post/store")
    Call<HashMap<String,String>> register(
            @Field("user_name") String user_name,
            @Field("profile_pic") String profile_pic

    );

}

1 个答案:

答案 0 :(得分:0)

如果没有更多的堆栈跟踪,很难说肯定,但我会说你的后端没有响应有效的JSON(http://192.168.0.111),因为你得到的错误信息是Gson发现的东西除了{作为回复中的第一个字符。