Send raw Json to retrofit 1.9

MainActivity

DetailsAPI

activity_main.xml

AndroidManifest.xml

public class MainActivity extends AppCompatActivity {

private TextView tvMain;

private String Root_url = "http://^^^^^^^^^^^^^^^^/api/registersignin";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tvMain = (TextView) findViewById(R.id.main_tv);

}

/*when button clicked*/

public void reqSubmit(View view) {

mRegisterUser();

}

private void mRegisterUser() {

RestAdapter adapter = new RestAdapter.Builder().setEndpoint(Root_url).build();

DetailsAPI api = adapter.create(DetailsAPI.class);

JSONObject jsonObject = new JSONObject();

try {

jsonObject.put("memberId", "109sA2mae25SkAQ2KF0tblAmTmJf0iJYUcNKZRf4lLERRRR3");

jsonObject.put("gender", 1);

jsonObject.put("genderPref", 2);

jsonObject.put("dob", "2017/10/17");

jsonObject.put("countryid", "1456356");

jsonObject.put("cityId", 113);

} catch (JSONException e) {

e.printStackTrace();

}

TypedInput in = null;

try {

in = new TypedByteArray("application/json", jsonObject.toString().getBytes("UTF-8"));

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

api.regUser2(in, new Callback<Object>() {

@Override

public void success(Object jsonObject, Response response) {

Toast.makeText(MainActivity.this, "Login successful!", Toast.LENGTH_SHORT).show();

Log.d("Lokesh", "Login successful");

tvMain.setText(jsonObject.toString());

}

@Override

public void failure(RetrofitError error) {

Log.d("Lokesh", "Login fail::" + error.toString());

Toast.makeText(MainActivity.this, "Login fail!", Toast.LENGTH_SHORT).show();

tvMain.setText(error.getMessage());

}

});

}

}

public interface DetailsAPI {

@FormUrlEncoded

@POST("/regact")

void regUser(@Field("memberId") String mem,

@Field("gender") int gender,

@Field("genderPref") int genderPref,

@Field("dob") String dob,

@Field("countryid") String id,

@Field("cityId") int city, Callback<JsonObject> callback);

@POST("/regact")

abstract void regUser2(@Body TypedInput body, Callback<Object> callback);

}

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

xmlns:android="http://schemas.android.com/apk/res/android">

<Button

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="send request"

android:onClick="reqSubmit"/>

<TextView

android:id="@+id/main_tv"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:textSize="22sp"/>

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.excelsoftservices.user2.fieldparamretro">

<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>

</manifest>

Output:

Logic used : Jake Wharton

https://stackoverflow.com/questions/21398598/how-to-post-raw-whole-json-in-the-body-of-a-retrofit-request