公元前596年,楚庄王派申舟出使齐国。途中要过境宋国,按规矩楚国是要向宋国申请借道的。楚庄王故意让申舟不要借道,只管大摇大摆地过去。申舟很担心,说:“宋国是晋国的附庸,跟我们为敌,我又跟宋昭公有仇,我这么去了必死无疑。”楚庄王说:“别怕!万一你死了,我为你去讨伐宋国!”
不出所料,申舟很快就被宋国士兵抓住了。宋国执政华元认为楚国不借道是瞧不起宋国,下令把申舟杀了。消息传到楚国,楚庄王一甩袖子跳起来,一边赤着脚往外跑,一边愤怒地叫着要发兵攻宋。侍从们赶紧拿着鞋和佩剑去追,捧鞋的人跑到寝宫门口才追上,抱剑的人跑到宫门外才追上,等驾车的人追上的时候,楚庄王已经跑到蒲胥集市去了。(成语“剑及履及”)
不久,楚国的大军就把宋国国都团团围住。这时候,华元一面带人守城,一面派人去晋国搬救兵。晋景公不敢出兵,又不想失去宋国这个盟友,就派壮士解扬去宋国去报信,告诉华元晋国救兵马上就到,让他们安心守城。
不料,解扬半路上被郑国人抓住,交给了楚国。楚庄王眼珠一转,对解扬说:“识时务者为俊杰,我来给你指一条明路!我把你带到宋国都城下,你对宋国人说,晋国人不愿帮助他们,不会出兵援救的。你照我说的办,我就给你加官进爵;否则就是死路一条,晓得么?”解扬想了想,答应了楚庄王。
楚庄王亲自领着解扬来到城下,让他喊话。解扬鼓足了劲,大声对城上喊道:“我是晋国使臣,被楚国抓住了。但是我要告诉你们,晋侯马上要亲自率军来援助你们了,你们可不要泄气呀!加油!”
楚庄王火冒三丈,让士兵把解扬押下来,说:“你失信于我,真是自寻死路!”
解扬说:“我听命于你,就是对晋国失信。我已经对晋侯作出了承诺,就没办法再接受你的命令。当初答应你,也只是为了完成我做晋臣的使命。如果你觉得背叛自己国君而投降敌人也算失信,那我无话可说,情愿受死。”
楚庄王愣了愣,忽然哈哈大笑起来,高兴地指着解扬对周围的人说:“你们看!你们看!这就是不怕死的忠臣!你们都要向他学习!”说完,就吩咐把解扬放回晋国去了。
解扬冒着生命危险为宋国人鼓劲儿,大大鼓舞了宋国军民的斗志。华元指挥守城将士抵挡住楚军一次又一次的进攻。双方相持了整整九个月,城里的粮食都吃完了,每天都有许多宋国人被饿死。宋国人这才意识到,晋国的救兵不会来了,要守住宋国的都城,只能靠他们自己。
这时候,其实楚国军队的粮食储备也只能维持七天。楚庄王有了退兵的念头。申舟的父亲申犀听说之后不干了,跑去找庄王说:“我儿子当初临走的时候,大王对他许诺,如果他为国捐躯,就发兵征伐宋国为他报仇。如今他已经死了,难道大王要食言反悔吗?”楚庄王说:“咱们粮草不多了,我也没办法啦!”申犀说:“我有个主意:咱们让士兵们在城外盖房子、耕田地,宋国人看到我们打算常住,一定会受不了而投降的。”楚庄王说:“好,好,就照你说的办吧。”
城里的华元看见城外楚国士兵开始开荒种地,不由大吃一惊。他去找宋文公说:“看起来楚国人要在城外长期驻扎,晋国救兵又不来,现在只能靠胆量和运气了!”他把自己的想法对宋文公一说,文公也没什么好办法,只得同意了。
半夜里,华元扮成楚兵,顺着绳子爬下城头,一直走进楚军营盘。他走到楚军主帅子反的营外,对卫兵说:“大王有事要吩咐元帅,派我来传达。”卫兵说:“元帅已经睡了。”华元说:“大王急等回音,我要马上进去。”卫兵不敢耽搁,就放他进去了。
子反果然在睡觉。华元上前,轻轻把他推醒。子反一睁眼,吓了一跳,还没来得及反应,就被华元用刀挟持住了。华元低声严厉地说:“你要是声张,我就不客气了!”子反问:“你是谁?”华元说:“我是宋军主帅华元。”子反大吃一惊,说:“啊?!你到这里干什么?”华元看子反平静了一些,就收起刀,赔了个不是,说:“我来跟你交交心。”
子反看了看华元,问:“你们城里的情况怎么样啦?”华元说:“别提了。我们境况很惨,百姓们没有吃的,交换孩子杀来吃;没有柴烧,只好用饿死的人的骸骨来烧火。再这样下去,宋国就完了。”
子反说:“那你们为什么不投降呢?”华元说:“我们虽然是小国,但是军民上下一心,要跟都城共存亡。我这次来是想提个建议:只要楚国退兵三十里,做出让步,我们就跟楚国讲和结盟。我华元情愿留在楚国,当这次盟约的人质。”
子反看华元是个有胆魄的人,心里就有点爱惜敬重,当即答应向楚庄王报告。楚庄王听了报告,觉得这是两全其美的办法,爽快地同意了。于是楚国军队后退三十里,楚国和宋国签订了盟约。这次盟约的誓词是:“我无尔诈,尔无我虞。”意思是说,我不要欺骗你,你也不要欺骗我。(成语“尔虞我诈”)
华元按照约定留在楚国当人质,直到宋文公去世后才回国。