简体   繁体   English

通过 WhatsApp 发送消息

[英]Sending message through WhatsApp

由于我发现了一些较旧的帖子,表明whatsapp 不支持这一点,我想知道是否发生了一些变化,是否有办法打开一个带有我通过意图发送的号码的whatsapp“聊天”?

UPDATE Please refer to https://faq.whatsapp.com/en/android/26000030/?category=5245251更新请参考https://faq.whatsapp.com/en/android/26000030/?category=5245251

WhatsApp's Click to Chat feature allows you to begin a chat with someone without having their phone number saved in your phone's address book. WhatsApp 的点击聊天功能让您无需将电话号码保存在手机通讯录中即可开始与某人聊天。 As long as you know this person's phone number, you can create a link that will allow you to start a chat with them.只要您知道此人的电话号码,您就可以创建一个链接,以便您开始与他们聊天。

Use: https://wa.me/15551234567使用: https ://wa.me/15551234567

Don't use: https://wa.me/+001-(555)1234567不要使用: https ://wa.me/+001-(555)1234567

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

Original answer Here is the solution原始答案这是解决方案

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();
   }  

}

Also see http://www.whatsapp.com/faq/en/android/28000012另见http://www.whatsapp.com/faq/en/android/28000012

With this code you can open the whatsapp chat with the given number.使用此代码,您可以使用给定号码打开 whatsapp 聊天。

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, ""));
}

I found the following solution, first you'll need the whatsapp id:我找到了以下解决方案,首先你需要whatsapp id:

Matching with reports from some other threads here and in other forums the login name I found was some sort of: international area code without the 0's or + in the beginning + phone number without the first 0 + @s.whatsapp.net与此处和其他论坛中的其他线程的报告相匹配,我发现的登录名是某种形式:国际区号开头没有 0 或 + + 电话号码没有第一个 0 + @s.whatsapp.net

For example if you live in the Netherlands and having the phone number 0612325032 it would be 31612325023@s.whatsapp.net -> +31 for the Netherlands without the 0's or + and the phone number without the 0.例如,如果您居住在荷兰并且电话号码为 0612325032,那么对于没有 0 或 + 的荷兰以及没有 0 的电话号码,它将是 31612325023@s.whatsapp.net -> +31。

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);
    }

}

Simple solution, try this.简单的解决方案,试试这个。

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

This should work whether Whatsapp is installed or not.无论是否安装了 Whatsapp,这都应该有效。

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

Tested on Marshmallow S5 and it works!Marshmallow S5上测试,它可以工作!

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

This will open a direct chat with a person, if whatsapp not installed this will throw exception , if phone number not known to whatsapp they will offer to send invite via sms or simple sms message这将与一个人直接聊天,如果未安装whatsapp,这将抛出异常,如果whatsapp不知道电话号码,他们将提供通过短信或简单短信发送邀请

use this singleline code use to Sending message through WhatsApp使用此单行代码通过 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
     }

Here is the latest way to send a message via Whatsapp , even if the receiver's phone number is not in your Whatsapp chat or phone's Contacts list.这是通过Whatsapp发送消息的最新方式,即使接收者的电话号码不在您的Whatsapp聊天或电话的Contacts列表中。

private fun openWhatsApp(number: String) {
    try {
        packageManager.getPackageInfo("com.whatsapp", PackageManager.GET_ACTIVITIES)
        val intent = Intent(
            Intent.ACTION_VIEW,
            Uri.parse("https://wa.me/$number?text=I'm%20interested%20in%20your%20car%20for%20sale")
        )
        intent.setPackage("com.whatsapp")
        startActivity(intent)
    } catch (e: PackageManager.NameNotFoundException) {
        Toast.makeText(
            this,
            "Whatsapp app not installed in your phone",
            Toast.LENGTH_SHORT
        ).show()
        e.printStackTrace()
    }
}

intent.setPackage("com.whatsapp") will help you to avoid Open With chooser and open Whatsapp directly. intent.setPackage("com.whatsapp")将帮助您避免使用选择器打开并直接打开Whatsapp

Importent Note : If You are ending in catch statement, even if Whatsapp is installed.重要提示:如果您以catch语句结尾,即使安装了Whatsapp Please add queries to manifest.xml as follows:请向manifest.xml添加queries ,如下所示:

<queries>
   <package android:name="com.whatsapp" />
</queries>

Please see this answer for more details.有关更多详细信息,请参阅此答案

To check if WhatsApp is installed in device and initiate "click to chat" in WhatsApp:检查设备中是否安装了 WhatsApp 并在 WhatsApp 中启动“点击聊天”:

Kotlin:科特林:

try {
    // Check if whatsapp is installed
    context?.packageManager?.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA)
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://wa.me/$internationalPhoneNumber"))
    startActivity(intent)
} catch (e: NameNotFoundException) {
    Toast.makeText(context, "WhatsApp not Installed", Toast.LENGTH_SHORT).show()
}

Java:爪哇:

try {
    // Check if whatsapp is installed
    getPackageManager().getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA);
    Intent intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://wa.me/" + internationalPhoneNumber));
    startActivity(intent);
} catch (NameNotFoundException e) {
    Toast.makeText(context, "WhatsApp not Installed", Toast.LENGTH_SHORT).show();
}

getPackageInfo() throws NameNotFoundException if WhatsApp is not installed.如果未安装 WhatsApp, getPackageInfo()会抛出NameNotFoundException

The internationalPhoneNumber variable is used to access the phone number. internationalPhoneNumber变量用于访问电话号码。

Reference:参考:

The following code is used by Google Now App and will NOT work for any other application.以下代码由 Google Now 应用程序使用,不适用于任何其他应用程序。

I'm writing this post because it makes me angry, that WhatsApp does not allow any other developers to send messages directly except for Google.我写这篇文章是因为它让我很生气,WhatsApp 不允许任何其他开发人员直接发送消息,除了 Google。

And I want other freelance-developers to know, that this kind of cooperation is going on, while Google keeps talking about "open for anybody" and WhatsApp says they don't want to provide any access to developers.我想让其他自由开发者知道,这种合作正在进行中,而谷歌一直在谈论“对任何人开放”,而 WhatsApp 表示他们不想向开发者提供任何访问权限。

Recently WhatsApp has added an Intent specially for Google Now, which should look like following:最近 WhatsApp 专门为 Google Now 添加了一个 Intent,如下所示:

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", ?????);

I could also find out that "search_action_token" is a PendingIntent that contains an IBinder-Object, which is sent back to Google App and checked, if it was created by Google Now.我还可以发现“search_action_token”是一个包含 IBinder-Object 的 PendingIntent,它被发送回 Google App 并检查它是否是由 Google Now 创建的。

Otherwise WhatsApp will not accept the message.否则 WhatsApp 将不接受该消息。

Currently, the only official API that you may make a GET request to:目前,您可以向以下位置发出GET请求的唯一官方 API

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

Anyways, there is a secret API program already being ran by WhatsApp无论如何, WhatsApp 已经运行了一个秘密的 API 程序

This is what worked for me :这对我有用:

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

This works to me:这对我有用:

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.");
}

As the documentation says you can just use an URL like:正如 文档所说,您可以使用如下 URL:

https://wa.me/15551234567

Where the last segment is the number in in E164 Format最后一段是E164 格式的数字

Uri uri = Uri.parse("https://wa.me/15551234567");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

Use direct URL of whatsapp使用whatsapp的直接网址

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

You'll want to use a URL in the following format...您需要使用以下格式的 URL...

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

Then you can have it send whatever text you'd like.然后你可以让它发送你想要的任何文本。 You also have the option to specify a phone number...您还可以选择指定电话号码...

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

What you CANNOT DO is use the following:不能做的是使用以下内容:

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

You will get...你会得到...

We couldn't find the page you were looking for我们找不到您要查找的页面

wa.me , though, will work if you supply both a phone number and text.但是,如果您同时提供电话号码和文本, wa.me将起作用。 But, for the most part, if you're trying to make a sharing link, you really don't want to indicate the phone number, because you want the user to select someone.但是,在大多数情况下,如果您要创建共享链接,您真的不想指明电话号码,因为您希望用户选择某人。 In that event, if you don't supply the number and use wa.me as URL, all of your sharing links will fail.在这种情况下,如果您不提供号码并使用wa.me作为 URL,您的所有共享链接都会失败。 Please use app.whatsapp.com .请使用app.whatsapp.com

this is much lengthy but surly working.这很长,但工作得很好。 enjoy your code:)享受你的代码:)

 //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();

}

I'm really late here but I believe that nowadays we have shorter and better solutions to send messages through WhatsApp.我真的来晚了,但我相信现在我们有更短更好的解决方案来通过 WhatsApp 发送消息。

You can use the following to call the system picker, then choose which app you will use to share whatever you want.您可以使用以下命令调用系统选择器,然后选择您将使用哪个应用程序来分享您想要的任何内容。

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

If you are really need to send through WhatsApp all you need to do is the following (You will skip the system picker)如果您真的需要通过 WhatsApp 发送,您只需执行以下操作(您将跳过系统选择器)

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

If you need more information you can find it here: WhatsApp FAQ如果您需要更多信息,可以在这里找到: WhatsApp 常见问题

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

This is a much easier way to achieve this.这是实现这一目标的更简单的方法。 This code checks if whatsapp is installed on the device.此代码检查设备上是否安装了 whatsapp。 If it is installed, it bypasses the system picker and goes to the contact on whatsapp and prefields the text in the chat.如果已安装,它将绕过系统选择器并转到 whatsapp 上的联系人并在聊天中预先输入文本。 If not installed it opens whatsapp link on your web browser.如果未安装,它会在您的网络浏览器上打开 whatsapp 链接。

Check this code,检查此代码,

    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)));
}

This works to me:这对我有用:

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();
    }
}

get the contact number whom you want to send the message and create uri for whatsapp, here c is a Cursor returning the selected contact.获取您要发送消息的联系人号码并为whatsapp创建uri,这里c是返回所选联系人的Cursor。

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

From the documentation文档

To create your own link with a pre-filled message that will automatically appear in the text field of a chat, use https://wa.me/whatsappphonenumber/?text=urlencodedtext where whatsappphonenumber is a full phone number in international format and URL-encodedtext is the URL-encoded pre-filled message.要使用将自动出现在聊天文本字段中的预填充消息创建您自己的链接,请使用https://wa.me/whatsappphonenumber/?text=urlencodedtext其中 whatsappphonenumber 是国际格式和 URL 的完整电话号码-encodedtext 是 URL 编码的预填充消息。

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

Code example代码示例

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)

This one worked finally for me in Kotlin:这个终于在 Kotlin 中为我工作了:

private fun navigateToWhatsApp() {
        try {
            val url = "https://api.whatsapp.com/send?phone=+91${getString(R.string.contact)}"
            startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)).setPackage("com.whatsapp"))
        } catch (e: Exception) {
            showToast("Whatsapp app not installed in your device")
        }
    }

Sending to WhatsApp Number that exist in your contact list.发送到您的联系人列表中存在的 WhatsApp 号码。 Notice that we are using ACTION_SEND请注意,我们正在使用ACTION_SEND

 Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
 whatsappIntent.setType("text/plain");
 whatsappIntent.setPackage("com.whatsapp");
 whatsappIntent.putExtra(Intent.EXTRA_TEXT, "SMS TEXT, TEXT THAT YOU NEED TO SEND");
 try {
   startActivityForResult(whatsappIntent, 100);
 } catch (Exception e) {
   Toast.makeText(YourActivity.this, "App is not installed", Toast.LENGTH_SHORT).show();
 }

If Number doesn't exist in contact list .如果联系人列表中不存在号码。 Use WhatsApp API .使用 WhatsApp API

 String number = number_phone.getText().toString(); // I toke it from Dialog box
 number = number.substring(1); // To remove 0 at the begging of number (Optional) but needed in my case
 number = "962" + number; // Replace it with your country code
 String url = "https://api.whatsapp.com/send?phone=" + number + "&text=" + Uri.parse("Text that you want to send to the current user");
 Intent whatsappIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
 whatsappIntent.setPackage("com.whatsapp");
 whatsappIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 try {
   context.startActivity(whatsappIntent);
 } catch (android.content.ActivityNotFoundException ex) {
   Toast.makeText(YourActivity.this, "App is not installed", Toast.LENGTH_SHORT).show();
 }

The following API can be used in c++ as shown in my article .我的文章所示,以下 API 可以在 c++ 中使用。

You need to define several constants:您需要定义几个常量:

//
#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"

//

Then you connect to the API's endpoint.然后连接到 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;
}

Then send both header and body and wait for the result that needs to be “OK”.然后发送 header 和 body 并等待需要“OK”的结果。

Step 1 - open an HTTP request:第 1 步 - 打开一个 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;
}

Step 2 - send the header:第 2 步 - 发送标头:

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

Step 3 - send the message:第 3 步 - 发送消息:

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());

Now just check the result:现在只需检查结果:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM