Mengirim pesan melalui WhatsApp

112

Karena saya menemukan beberapa posting lama, yang mengatakan bahwa whatsapp tidak mendukung ini, saya bertanya-tanya apakah ada yang berubah dan apakah ada cara untuk membuka 'obrolan' whatsapp dengan nomor yang saya kirim melalui maksud?

Diego
sumber
apakah Anda mencoba penyedia tindakan berbagi?
Basim Sherif
Kedengarannya menarik, tapi bagaimana cara kerjanya. Dapatkah saya membagikan string (nomor telepon) dan akankah itu membuka whatsapp (atau pemilih?) Dapatkah Anda memberikan sedikit contoh?
Diego
2
Meskipun ada maksud ACTION_SENDTO di whatsapp, itu tidak dijalankan (dengan benar) sehingga tidak mungkin dilakukan ke nomor telepon tertentu [itulah yang saya temukan]
Manan Sharma
2
Kemungkinan duplikat Kirim teks ke kontak tertentu (whatsapp)
Rishabh Maurya
Saya masih tidak sabar untuk melampirkan gambar & teks pada saat yang sama, tetapi tidak berhasil,
huh

Jawaban:

180

PEMBARUAN Silakan merujuk ke https://faq.whatsapp.com/en/android/26000030/?category=5245251

Fitur Klik untuk Mengobrol di WhatsApp memungkinkan Anda untuk memulai obrolan dengan seseorang tanpa menyimpan nomor teleponnya di buku alamat telepon Anda. Selama Anda mengetahui nomor telepon orang ini, Anda dapat membuat tautan yang memungkinkan Anda memulai obrolan dengannya.

Gunakan: https://wa.me/15551234567

Jangan gunakan: https://wa.me/+001-(555)1234567

Contoh: https://wa.me/15551234567?text=I 'm% 20interested% 20in% 20your% 20car% 20for% 20sale

Jawaban asli Inilah solusinya

public void onClickWhatsApp(View view) {

    PackageManager pm=getPackageManager();
    try {

        Intent waIntent = new Intent(Intent.ACTION_SEND);
        waIntent.setType("text/plain");
        String text = "YOUR TEXT HERE";

        PackageInfo info=pm.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA);
        //Check if package exists or not. If not then code 
        //in catch block will be called
        waIntent.setPackage("com.whatsapp");

        waIntent.putExtra(Intent.EXTRA_TEXT, text);
        startActivity(Intent.createChooser(waIntent, "Share with"));

   } catch (NameNotFoundException e) {
        Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
                .show();
   }  

}

Lihat juga http://www.whatsapp.com/faq/en/android/28000012

Manan Sharma
sumber
Bagaimana cara berintegrasi dengan perpesanan? sehingga pengguna dapat memilih whatsapp atau perpesanan
Srikanth Pai
33
jika kita sudah memiliki informasi kontak apakah mungkin untuk menambahkan informasi kontak dan mengirim pesan tanpa harus menyentuh kontak untuk memilih dan klik ok untuk mengirim ??
pengguna1492955
4
Sumber @MananMerevikSharma tidak berbohong ( android.googlesource.com/platform/frameworks/base/+/refs/heads/… ). Selain itu, prinsip dasar Java: sebuah objek hidup sampai tidak ada lagi referensi ke sana.
JRomero
1
@Bayu_joo -1. Itu tidak "beralih ke pointer nol". Bagian lain tidak akan pernah bisa dijangkau. Ketika WhatsApp tidak diinstal, Intent masih dikirim, tetapi Dialog terbuka yang mengatakan bahwa tidak ada aplikasi yang cocok. Ini berarti Anda tidak menyediakan cara apa pun untuk memeriksa apakah WhatsApp sudah terpasang atau tidak.
0101100101
64

Dengan kode ini Anda dapat membuka obrolan whatsapp dengan nomor yang diberikan.

void openWhatsappContact(String number) {
    Uri uri = Uri.parse("smsto:" + number);
    Intent i = new Intent(Intent.ACTION_SENDTO, uri);
    i.setPackage("com.whatsapp");  
    startActivity(Intent.createChooser(i, ""));
}
pengguna2957782
sumber
3
@ user2957782 saya mengikuti pak ini, tetapi ketika saya mengklik tombol saya untuk memulai whatsapp saya, dikatakan "Tidak ada aplikasi yang dapat melakukan tindakan ini"
arjun narahari
@VihaanVerma dapatkah Anda berbagi bagaimana Anda membuat ini bekerja? Saya menerapkan kode yang sama terhadap whatsapp versi 2.11.56021 dan saya tidak mendapatkan apa-apa ...
Alamgir Mand
1
Dicentang, itu mengirim saya ke semua daftar obrolan, bukan ke jendela obrolan nomor tertentu.
Darpan
8
Ini hanya berfungsi jika Anda memiliki nomor itu di daftar obrolan atau daftar kontak Anda.
Anshul Tyagi
1
alih-alih startActivity(Intent.createChooser(i, ""));digunakan startActivity(i);untuk langsung membuka obrolan nomor yang disediakan. 1. Diuji pada Samsung J7 prime itu bekerja. 2. nomor tidak ada dalam daftar kontak saya maupun dalam daftar obrolan saya. 3. jika nomor tidak menggunakan whatsapp, sebuah kotak dialog muncul menanyakan saya apakah saya ingin mengundang kontak itu di whatsapp. Saya pikir ini adalah solusi terbaik jika Anda ingin memberikan dukungan kontak whatsapp untuk pengguna aplikasi Anda.
Muhammad Saqib
25

Saya menemukan solusi berikut, pertama-tama Anda memerlukan id whatsapp:

Sesuai dengan laporan dari beberapa utas lain di sini dan di forum lain, nama login yang saya temukan adalah semacam: kode area internasional tanpa 0 atau + di awal + nomor telepon tanpa 0 + @ s.whatsapp.net pertama

Misalnya jika Anda tinggal di Belanda dan memiliki nomor telepon 0612325032 maka akan menjadi [email protected] -> +31 untuk Belanda tanpa 0 atau + dan nomor telepon tanpa 0.

public void sendWhatsAppMessageTo(String whatsappid) {

Cursor c = getSherlockActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI,
        new String[] { ContactsContract.Contacts.Data._ID }, ContactsContract.Data.DATA1 + "=?",
        new String[] { whatsappid }, null);
c.moveToFirst();

Intent whatsapp = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/" + c.getString(0)));
c.close();

 if (whatsapp != null) {

startActivity(whatsapp);      

} else {
        Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
                .show();
//download for example after dialog
                Uri uri = Uri.parse("market://details?id=com.whatsapp");
                Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    }

}
Diego
sumber
Saya mencoba kode ini tetapi saya diberi tahu bahwa getSherlockActivity () tidak ditentukan. bagaimana cara memperbaikinya ??
Eman87
2
@ Eman87 Diego menggunakan Action Bar Sherlock, jadi metodenya. Dapatkan cakupan aktivitas Anda di tempat getSherlockActivity ().
Manan Sharma
4
Tidak ada gunanya if (whatsapp != null)seperti 2 baris di atas yang Anda lakukan Intent whatsapp = new Intent(...).
Carcamano
2
Ini adalah opsi yang bagus untuk membuka jendela obrolan secara langsung jika orang tersebut ada di Kontak. Apakah ada cara untuk melakukan hal yang sama untuk nomor baru yang tidak ada di kontak kita?
MohammedYakub Moriswala
1
Anda perlu menambahkan <uses-permission android:name="android.permission.READ_CONTACTS" />izin diAndroidManifest.xml
Pratik Butani
16

Ini harus berfungsi baik Whatsapp diinstal atau tidak.

boolean isWhatsappInstalled = whatsappInstalledOrNot("com.whatsapp");
if (isWhatsappInstalled) {
    Uri uri = Uri.parse("smsto:" + "98*********7")
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Hai Good Morning");
    sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent);
} else {
    Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT).show();
    Uri uri = Uri.parse("market://details?id=com.whatsapp");
    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(goToMarket);

}

private boolean whatsappInstalledOrNot(String uri) {
    PackageManager pm = getPackageManager();
    boolean app_installed = false;
    try {
        pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
        app_installed = true;
    } catch (PackageManager.NameNotFoundException e) {
        app_installed = false;
    }
    return app_installed;
}
Satheesh
sumber
11
Kegiatan Tidak Fount pengecualian bahkan ketika whatsapp diinstal
itzhar
2
Tidak ada Aktivitas yang ditemukan untuk menangani Intent {act = android.intent.action.SENDTO typ = text / plain pkg = com.whatsapp (memiliki ekstra)}
Rajesh
2
Anda perlu menghapus baris ini untuk bekerja dengan sendIntent.setType ("text / plain");
MSaudi
2
menghapus sendIntent.setType ("text / plain") akan menjaga pengecualian Activity Not Found tidak dilempar, tapi sekarang teks tidak ditambahkan sebagai pesan
Rik van Velzen
sepertinya sudah tidak memungkinkan lagi, aktivitas yang menerima maksud tersebut memiliki beberapa referensi ke "sms_body" tetapi saya tidak dapat membuatnya berfungsi
sherpya
15

Solusi sederhana, coba ini.

String phoneNumberWithCountryCode = "+62820000000";
String message = "Hallo";

startActivity(
    new Intent(Intent.ACTION_VIEW,
        Uri.parse(
            String.format("https://api.whatsapp.com/send?phone=%s&text=%s", phoneNumberWithCountryCode, message)
        )
    )
);
Latief Anwar
sumber
10

Diuji di Marshmallow S5 dan berhasil!

    Uri uri = Uri.parse("smsto:" + "phone number with country code");
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri);
    sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent); 

Ini akan membuka obrolan langsung dengan seseorang, jika whatsapp tidak diinstal ini akan menimbulkan pengecualian , jika nomor telepon tidak diketahui whatsapp mereka akan menawarkan untuk mengirim undangan melalui sms atau pesan sms sederhana

Ilya Gazman
sumber
bagaimana dengan 'tombol kirim'? Bisakah kita melakukannya secara terprogram juga ...?
gumuruh
3

Kode berikut digunakan oleh Aplikasi Google Now dan TIDAK akan berfungsi untuk aplikasi lain.

Saya menulis posting ini karena itu membuat saya marah, bahwa WhatsApp tidak mengizinkan pengembang lain untuk mengirim pesan secara langsung kecuali Google.

Dan saya ingin pengembang lepas lainnya tahu, bahwa kerja sama semacam ini sedang berlangsung, sementara Google terus berbicara tentang "terbuka untuk siapa saja" dan WhatsApp mengatakan mereka tidak ingin memberikan akses apa pun kepada pengembang.

Baru-baru ini WhatsApp menambahkan Intent khusus untuk Google Now, yang akan terlihat seperti berikut:

Intent intent = new Intent("com.google.android.voicesearch.SEND_MESSAGE_TO_CONTACTS");
intent.setPackage("com.whatsapp");
intent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.VoiceMessagingActivity"));

intent.putExtra("com.google.android.voicesearch.extra.RECIPIENT_CONTACT_CHAT_ID", number);
intent.putExtra("android.intent.extra.TEXT", text);
intent.putExtra("search_action_token", ?????);

Saya juga bisa mengetahui bahwa "search_action_token" adalah PendingIntent yang berisi IBinder-Object, yang dikirim kembali ke Google App dan diperiksa, jika dibuat oleh Google Now.

Jika tidak, WhatsApp tidak akan menerima pesan tersebut.

Elang Hitam
sumber
Menarik! tetapi bisakah Anda menjelaskan lebih lanjut tentang "search_action_token" bagaimana kami bisa mendapatkan dan menerapkannya.
Bilal Mustafa
APK com.google.android.googlequicksearchbox Kelas com.google.android.search.verification.api.SearchActionVerificationService Metode createGoogleVerificationIntent
black-hawk
3

Saat ini, satu-satunya API resmi yang dapat Anda GETminta untuk:

https://api.whatsapp.com/send?phone=919773207706&text=Hello

Bagaimanapun, ada program API rahasia yang sudah dijalankan oleh WhatsApp

Zameer
sumber
1
Meskipun tautan ini mungkin menjawab pertanyaan, lebih baik menyertakan bagian penting dari jawaban di sini dan menyediakan tautan untuk referensi. Jawaban link saja bisa menjadi tidak valid jika halaman tertaut berubah. - Dari Ulasan
Kumar Saurabh
1
@KumarSaurab Ini bukan tautan, ini permintaan GET
Zameer
3

gunakan kode singleline ini untuk Mengirim pesan melalui WhatsApp

//NOTE : please use with country code first 2digits without plus signed
try {
      String mobile = "911234567890";
      String msg = "Its Working";
      startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://api.whatsapp.com/send?phone=" + mobile + "&text=" + msg)));
      }catch (Exception e){
        //whatsapp app not install
     }
milan pithadia
sumber
2

Ini bekerja untuk saya:

PackageManager pm = context.getPackageManager();
try {
    pm.getPackageInfo("com.whatsapp", PackageManager.GET_ACTIVITIES);
    Intent intent = new Intent();
            intent.setComponent(new ComponentName(packageName,
                    ri.activityInfo.name));
            intent.setType("text/plain");
            intent.putExtra(Intent.EXTRA_TEXT, element);

} catch (NameNotFoundException e) {
    ToastHelper.MakeShortText("Whatsapp have not been installed.");
}
Cabezas
sumber
2

Inilah yang berhasil untuk saya:

        Uri uri = Uri.parse("https://api.whatsapp.com/send?phone=" + "<number>" + "&text=" + "Hello WhatsApp!!");
        Intent sendIntent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(sendIntent);
maximus
sumber
2

Gunakan URL langsung dari whatsapp

String url = "https://api.whatsapp.com/send?phone="+number;
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
Pierre Alexandre
sumber
1

ini jauh lebih lama tetapi bekerja tidak pasti. nikmati kode Anda :)

 //method used to show IMs
private void show_custom_chooser(String value) {
    List<ResolveInfo> list = null;
    final Intent email = new Intent(Intent.ACTION_SEND);
    email.setData(Uri.parse("sms:"));
    email.putExtra(Intent.EXTRA_TEXT, "" + value);
    email.setType("text/plain"); // vnd.android-dir/mms-sms

    WindowManager.LayoutParams WMLP = dialogCustomChooser.getWindow()
            .getAttributes();
    WMLP.gravity = Gravity.CENTER;
    dialogCustomChooser.getWindow().setAttributes(WMLP);
    dialogCustomChooser.getWindow().setBackgroundDrawable(
            new ColorDrawable(android.graphics.Color.TRANSPARENT));
    dialogCustomChooser.setCanceledOnTouchOutside(true);
    dialogCustomChooser.setContentView(R.layout.about_dialog);
    dialogCustomChooser.setCancelable(true);
    ListView lvOfIms = (ListView) dialogCustomChooser
            .findViewById(R.id.listView1);
    PackageManager pm = getPackageManager();
    List<ResolveInfo> launchables = pm.queryIntentActivities(email, 0);
    // ////////////new
    list = new ArrayList<ResolveInfo>();
    for (int i = 0; i < launchables.size(); i++) {
        String string = launchables.get(i).toString();
        Log.d("heh", string);
//check only messangers
        if (string.contains("whatsapp")) {
            list.add(launchables.get(i));
        }
    }
    Collections.sort(list, new ResolveInfo.DisplayNameComparator(pm));
    int size = launchables.size();
    adapter = new AppAdapter(pm, list, MainActivity.this);
    lvOfIms.setAdapter(adapter);
    lvOfIms.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long arg3) {
            ResolveInfo launchable = adapter.getItem(position);
            ActivityInfo activity = launchable.activityInfo;
            ComponentName name = new ComponentName(
                    activity.applicationInfo.packageName, activity.name);
            email.addCategory(Intent.CATEGORY_LAUNCHER);
            email.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            email.setComponent(name);
            startActivity(email);
            dialogCustomChooser.dismiss();
        }
    });
    dialogCustomChooser.show();

}
John Smith
sumber
1

Saya sangat terlambat di sini tetapi saya percaya bahwa saat ini kami memiliki solusi yang lebih singkat dan lebih baik untuk mengirim pesan melalui WhatsApp.

Anda dapat menggunakan berikut ini untuk memanggil pemilih sistem, lalu memilih aplikasi mana yang akan Anda gunakan untuk membagikan apa pun yang Anda inginkan.

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent);

Jika Anda benar-benar perlu mengirim melalui WhatsApp, yang perlu Anda lakukan adalah sebagai berikut (Anda akan melewati pemilih sistem)

 Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
    sendIntent.setType("text/plain");
    // Put this line here
    sendIntent.setPackage("com.whatsapp");
    //
    startActivity(sendIntent);

Jika Anda membutuhkan informasi lebih lanjut, Anda dapat menemukannya di sini: FAQ WhatsApp

Akan
sumber
1

Seperti yang dikatakan dalam dokumentasi Anda bisa menggunakan URL seperti:

https://wa.me/15551234567

Dimana segmen terakhir adalah nomor dalam Format E164

Uri uri = Uri.parse("https://wa.me/15551234567");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
GVillani82
sumber
1
private fun sendWhatsappMessage(phoneNumber:String, text:String) {        
  val url = if (Intent().setPackage("com.whatsapp").resolveActivity(packageManager) != null) {
        "whatsapp://send?text=Hello&phone=$phoneNumber"
    } else {
        "https://api.whatsapp.com/send?phone=$phoneNumber&text=$text"
    }

    val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
    startActivity(browserIntent)
}

Ini adalah cara yang lebih mudah untuk mencapai ini. Kode ini memeriksa apakah whatsapp diinstal pada perangkat. Jika terinstal, itu melewati pemilih sistem dan pergi ke kontak di whatsapp dan memasukkan teks dalam obrolan. Jika tidak diinstal, itu membuka tautan whatsapp di browser web Anda.

Adekola Akano
sumber
1

Anda ingin menggunakan URL dalam format berikut ...

https://api.whatsapp.com/send?text=text

Kemudian Anda dapat membuatnya mengirim teks apa pun yang Anda inginkan. Anda juga memiliki opsi untuk menentukan nomor telepon ...

https://api.whatsapp.com/send?text=text&phone=1234

Apa yang TIDAK DAPAT Anda LAKUKAN adalah menggunakan yang berikut ini:

https://wa.me/send?text=text

Kamu akan mendapatkan...

Kami tidak dapat menemukan halaman yang Anda cari

wa.me, meskipun, akan berfungsi jika Anda memberikan nomor telepon dan teks. Namun, sebagian besar, jika Anda mencoba membuat tautan berbagi, Anda benar-benar tidak ingin menunjukkan nomor teleponnya, karena Anda ingin pengguna memilih seseorang. Dalam hal ini, jika Anda tidak memberikan nomor dan digunakan wa.mesebagai URL, semua tautan berbagi Anda akan gagal. Silakan gunakan app.whatsapp.com.

HoldOffHunger
sumber
0

Periksa kode ini,

    public void share(String subject,String text) {
     final Intent intent = new Intent(Intent.ACTION_SEND);

String score=1000;
     intent.setType("text/plain");
     intent.putExtra(Intent.EXTRA_SUBJECT, score);
     intent.putExtra(Intent.EXTRA_TEXT, text);

     startActivity(Intent.createChooser(intent, getString(R.string.share)));
}
Basim Sherif
sumber
0

Ini bekerja untuk saya:

public static void shareWhatsApp(Activity appActivity, String texto) {

    Intent sendIntent = new Intent(Intent.ACTION_SEND);     
    sendIntent.setType("text/plain");
    sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, texto);

    PackageManager pm = appActivity.getApplicationContext().getPackageManager();
    final List<ResolveInfo> matches = pm.queryIntentActivities(sendIntent, 0);
    boolean temWhatsApp = false;
    for (final ResolveInfo info : matches) {
      if (info.activityInfo.packageName.startsWith("com.whatsapp"))  {
          final ComponentName name = new ComponentName(info.activityInfo.applicationInfo.packageName, info.activityInfo.name);
          sendIntent.addCategory(Intent.CATEGORY_LAUNCHER);
          sendIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK);
          sendIntent.setComponent(name);
          temWhatsApp = true;
          break;
      }
    }               

    if(temWhatsApp) {
        //abre whatsapp
        appActivity.startActivity(sendIntent);
    } else {
        //alerta - você deve ter o whatsapp instalado
        Toast.makeText(appActivity, appActivity.getString(R.string.share_whatsapp), Toast.LENGTH_SHORT).show();
    }
}
pengguna3124158
sumber
0

dapatkan nomor kontak yang ingin Anda kirimi pesan dan buat uri untuk whatsapp, di sini c adalah Kursor mengembalikan kontak yang dipilih.

Uri.parse("content://com.android.contacts/data/" + c.getString(0)));
i.setType("text/plain");
i.setPackage("com.whatsapp");           // so that only Whatsapp reacts and not the chooser
i.putExtra(Intent.EXTRA_SUBJECT, "Subject");
i.putExtra(Intent.EXTRA_TEXT, "I'm the body.");
startActivity(i);
Kiran Maniya
sumber
0

Dari dokumentasi

Untuk membuat tautan Anda sendiri dengan pesan yang telah diisi sebelumnya yang secara otomatis akan muncul di bidang teks obrolan, gunakan https://wa.me/whatsappphonenumber/?text=urlencodedtext di mana whatsappphonenumber adalah nomor telepon lengkap dalam format internasional dan URL -encodedtext adalah pesan yang sudah diisi sebelumnya dengan kode URL.

Contoh: https://wa.me/15551234567?text=I 'm% 20interested% 20in% 20your% 20car% 20for% 20sale

Contoh kode

val phoneNumber = "13492838472"
    val text = "Hey, you know... I love StackOverflow :)"
    val uri = Uri.parse("https://wa.me/$phoneNumber/?text=$text")
    val sendIntent = Intent(Intent.ACTION_VIEW, uri)
    startActivity(sendIntent)
Gastón Saillén
sumber
-1

API berikut dapat digunakan di c ++ seperti yang ditunjukkan di artikel saya .

Anda perlu menentukan beberapa konstanta:

//
#define    GroupAdmin                <YOUR GROUP ADMIN MOBILE PHONE>
#define GroupName                <YOUR GROUP NAME>
#define CLIENT_ID                <YOUR CLIENT ID>
#define CLIENT_SECRET            <YOUR CLIENT SECRET>

#define GROUP_API_SERVER        L"api.whatsmate.net"
#define GROUP_API_PATH          L"/v3/whatsapp/group/text/message/12"
#define IMAGE_SINGLE_API_URL    L"http://api.whatsmate.net/v3/whatsapp/group/image/message/12"

//

Kemudian Anda terhubung ke titik akhir API.

hOpenHandle = InternetOpen(_T("HTTP"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (hOpenHandle == NULL)
{
    return false;
}

hConnectHandle = InternetConnect(hOpenHandle,
    GROUP_API_SERVER,
    INTERNET_DEFAULT_HTTP_PORT,
    NULL, NULL, INTERNET_SERVICE_HTTP,
    0, 1);

if (hConnectHandle == NULL)
{
    InternetCloseHandle(hOpenHandle);
    return false;
}

Kemudian kirim header dan body dan tunggu hasil yang harus “OK”.

Langkah 1 - buka permintaan HTTP:

const wchar_t *AcceptTypes[] = { _T("application/json"),NULL };
HINTERNET hRequest = HttpOpenRequest(hConnectHandle, _T("POST"), GROUP_API_PATH, NULL, NULL, AcceptTypes, 0, 0);

if (hRequest == NULL)
{
    InternetCloseHandle(hConnectHandle);
    InternetCloseHandle(hOpenHandle);
    return false;
}

Langkah 2 - kirim tajuk:

std::wstring HeaderData;

HeaderData += _T("X-WM-CLIENT-ID: ");
HeaderData += _T(CLIENT_ID);
HeaderData += _T("\r\nX-WM-CLIENT-SECRET: ");
HeaderData += _T(CLIENT_SECRET);
HeaderData += _T("\r\n");
HttpAddRequestHeaders(hRequest, HeaderData.c_str(), HeaderData.size(), NULL);

Langkah 3 - kirim pesan:

std::wstring WJsonData;
WJsonData += _T("{");
WJsonData += _T("\"group_admin\":\"");
WJsonData += groupAdmin;
WJsonData += _T("\",");
WJsonData += _T("\"group_name\":\"");
WJsonData += groupName;
WJsonData += _T("\",");
WJsonData += _T("\"message\":\"");
WJsonData += message;
WJsonData += _T("\"");
WJsonData += _T("}");

const std::string JsonData(WJsonData.begin(), WJsonData.end());

bResults = HttpSendRequest(hRequest, NULL, 0, (LPVOID)(JsonData.c_str()), JsonData.size());

Sekarang lihat saja hasilnya:

TCHAR StatusText[BUFFER_LENGTH] = { 0 };
DWORD StatusTextLen = BUFFER_LENGTH;
HttpQueryInfo(hRequest, HTTP_QUERY_STATUS_TEXT, &StatusText, &StatusTextLen, NULL);
bResults = (StatusTextLen && wcscmp(StatusText, L"OK")==FALSE);
Michael Haephrati
sumber