在汉武帝刚即位的时候,有一次和匈奴打仗,抓了不少俘虏。从俘虏交代的情况中,汉武帝得知在敦煌和祁连附近有一个游牧民族,名叫大月氏。匈奴和大月氏曾因为争夺另一个国家的领土发生过冲突,几次交战都以大月氏的失败而结束,匈奴首领老上单于杀死了大月氏的国王,还把国王的头做成酒杯喝酒。大月氏经过几次战争后,国力衰退,人口急剧减少,只好往西边迁移,躲避匈奴的追杀,一方面又想把匈奴打败。汉武帝了解这些情况后,认为汉朝可以和大月氏联合起来对付匈奴,于是汉武帝在全国广招人才,希望有人能代汉朝出使西域。
这时,有一个人自告奋勇愿意出使西域,他就是张骞。汉武帝很欣赏他的勇气,命他带领一百人出使西域。有一个归顺汉朝的胡人,名叫堂邑父,因为他了解一些西域国家的语言,熟悉路线,汉武帝任命他为向导,和张骞一起出行。
公元前139年,张骞一行人从陇西(今甘肃临洮)出发,朝西边前进,来到河西走廊。自从大月氏从这儿迁走后,这一地区便成为匈奴人的领地。张骞担心遇见匈奴人,满心期望着快点走出河西走廊,没料到还是被匈奴的骑兵发现了,一行人被俘虏到匈奴王庭(今内蒙古自治区呼和浩特附近),见到了军臣单于。
军臣单于当然不会让张骞去大月氏,他知道汉朝想联合大月氏一起讨伐匈奴,现在抓住了汉朝的使者,军臣单于决定把他们软禁起来。去大月氏必须要经过匈奴的领地,不管以后汉朝还要派谁出使西域,都会被匈奴拦住。军臣单于正是算准了这一点,才敢嚣张地囚禁张骞。
为了让张骞打消出使西域的念头,一心一意留在匈奴,军臣单于想出很多办法来挽留张骞,甚至找了一个匈奴女子给张骞做妻子,还生了孩子。张骞表面上顺从匈奴,其实心里一直没忘记汉武帝交给自己的任务,他一定要到达大月氏。张骞在匈奴部落里小心翼翼地生活着,吩咐其他使者假意接受匈奴的各种安排,暗地里寻找机会逃跑。
到公元前129年,张骞在匈奴社会里足足生活了十年。匈奴人看到张骞等人没有任何反抗的举动,心里渐渐对他们放松了警惕,单于也认为张骞已经断绝了去大月氏的念头,愿意安安分分地生活在荒漠中。有一天,张骞等到了匈奴人戒备松懈的机会,他毫不犹豫地带领使者们逃出了匈奴王庭。凭着十年间和匈奴的日夜相处,汉朝使者多多少少都学会了匈奴人的语言,加上他们一直穿着匈奴人的衣服,一路上竟也没被别人发觉。而且张骞预先熟悉了西域的路线,这一次他们没费多少时间就逃出了匈奴的领地。
逃出来后,张骞才得知西域诸国之间发生了冲突,大月氏被乌孙(今伊犁河流域)和匈奴骚扰,迁移到更西边的地方,在原来的大夏国定居下来。现在的大月氏距离更加遥远,张骞等人的粮食和饮水坚持不了那么长的时间,于是张骞决定先去西南边的大宛,请求大宛国王的帮助。
一行人从塔里木河向西前进,经过库车、疏勒,翻过葱岭,终于在十几天后来到了大宛(今乌兹别克斯坦费尔干纳盆地)。一路上,很多使者因为沙漠和荒原的恶劣环境而献出了生命,多亏堂邑父善于射猎野禽,总算没让全部人丢掉性命。
大宛国王得知张骞等人的经历后,表示愿意把他们送到大月氏。张骞很高兴,承诺回到汉朝后一定禀告汉武帝,回赠礼物和珠宝。大宛国王早就听说汉朝是个繁荣富强的国家,巴不得和汉朝交好,只是匈奴阻挡在中间,无法联系汉朝,张骞的话无疑给大宛国王吃了一颗定心丸。不多久,大宛国就派了几名随从和翻译,带着张骞来到康居(今乌兹别克斯坦和塔吉克斯坦境内),康居王接着派人把他们送到大月氏。
当张骞把汉武帝的想法和大月氏的人们说了之后,竟然遭到了拒绝。原来大月氏定居的这个地方水草丰美,物产丰富,离乌孙和匈奴都很远,安稳的生活让大月氏人忘记了战争带来的痛苦,他们不想再失去领土;而且汉朝和大月氏隔着很远的距离,匈奴说来就来,汉朝的军队却要花很多时间才能到达。张骞不死心,他索性留在大月氏,试图说服大月氏国王,眨眼间,一年过去了,大月氏王始终没有同意和汉朝联盟,张骞只好带着遗憾启程回朝。
公元前128年,张骞从大月氏离开,踏上回汉朝的路。为了防止再次被匈奴人抓住,张骞决定从塔里木盆地的南部穿过去,然后经过莎车、于阗(今和田)、鄯善(今若羌),来到羌人的领地。原以为这次一定能顺利回去,谁料到羌人的领地也被匈奴占领了,匈奴骑兵抓住了张骞和几名使者,一关又是一年。
公元前126年,匈奴内部发生斗争,军臣单于去世了,他的弟弟左谷蠡王伊稚斜和太子于单打了起来,张骞趁机带着堂邑父和妻儿逃了出来,这一次,他们终于回到了汉朝。
张骞出使西域前后经历了十三年,出去时带着一百多人,回来时只剩下张骞和堂邑父,途中遇到了无数恶劣的环境,还被匈奴囚禁,其中的痛苦旁人如何感受得到?张骞没有完成汉武帝交给的任务,但他的行为给西域和汉朝带来了巨大的影响。自古以来,西域就居住着众多少数民族,由于路途遥远,一直没能和中原建立联系,张骞第一次出使西域,把汉朝的情况传播开来,使西域各国逐渐开始来往于中原。张骞回朝后详细对汉武帝说明了西域各国的位置、特产、城市和路线,这对后来开发“丝绸之路”奠定了基础,也是第一份详细讲解西域地理风貌的资料。
汉武帝见张骞带来的有关西域的情况,就封张骞为太中大夫,封堂邑父为奉使君,还赐给他们很多财物。
在大月氏的时候,张骞曾经去过大夏国,从那里他得知蜀郡西南有一条路通往身毒(今印度),再继续走就能达到大夏。张骞便上书武帝,说自己愿意去打通这条西南夷道,汉武帝给了他很多人马,张骞把他们分为四队,分别朝身毒出发。走到昆明的时候,当地人把张骞拦下来,说什么也不准他从昆明经过。不管张骞怎么解释,当地人始终不肯放行,张骞只好返回长安。虽然没有开拓出新的西域路线,张骞一路上也收集了不少地方民情,总算有了些成果。
后来张骞随大将军卫青攻打匈奴,立下战功,被封为博望侯;接着又和李广一起讨伐匈奴,却因为延误军期被贬为庶人。
公元前119年,汉武帝为了联合乌孙打击匈奴,重新封张骞为中郎将,率领300人出使乌孙,并带去大量牲畜和生活用品。到达乌孙后,张骞分别让随从前往大月氏、大宛、康居、大夏国等国家,传达汉武帝希望交好的意愿,各国纷纷派使者跟随张骞来到长安。
公元前114年,张骞去世,西域各国听到这个消息后,都表示惋惜。因为西域人民对张骞很是尊重,后来的汉朝使者便借用博望侯的名号和西域各国来往。张骞出使西域,不仅开拓了中原通往西域的道路,把西域的特产引进中原,丰富了中原人民的生活。